【问题标题】:Instanciation of class to be tested in test class in Java在Java中的测试类中要测试的类的实例化
【发布时间】:2019-06-28 20:02:33
【问题描述】:

为了在测试类中获取要测试的类的实例,最佳实践是什么?

手动实例化它会更好吗
ClassToBeTested classToBeTested = new ClassToBeTested();

在测试类中

从 Spring 上下文中获取它,如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {

  @Autowired
  MyService service;
...

}

【问题讨论】:

  • 它有依赖关系吗?如果是这样,第二种情况将为您提供它们。如果没有,或者您愿意自己提供它们,两者都可以。
  • 感谢您的快速接受,很高兴您发现答案对您有帮助。

标签: java spring unit-testing junit dependency-injection


【解决方案1】:

编程中有一条简单的规则,可以指导这样的问题:

你做某事不是因为你可以,而是因为这样做有意义

含义:你总是努力编写最简约、最简单的代码来解决你的问题。

那么当

ClassToBeTested classToBeTested = new ClassToBeTested();

足以满足您的测试用例,并为您提供编写出色测试所需的一切,然后您就可以使用它。

如果您需要从基于注释的 DI 方法中“更容易”获得的东西,那么您可以使用该方法。

话虽如此,但也有约定。当大多数程序员会做的“典型”事情......是使用注释方法时,那么这就是你应该使用的。

【讨论】:

    【解决方案2】:

    最好尝试使用自动连线,以便与更干净和测试友好的代码以及未来的变化保持一致。

    将来使用“新”可能会出现问题,但自动接线可能会为您节省

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-25
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多