【问题标题】:Need to use dependency injection in unit tests - should I use junit or testng?需要在单元测试中使用依赖注入 - 我应该使用 junit 还是 testng?
【发布时间】:2013-08-14 23:47:15
【问题描述】:

我们正在研究如何在单元测试中使用依赖注入(使用 JSR-330 语法,但如果重要的话,没有在基本测试中明确指定引擎),到目前为止,我们已经使用了 junit 4,并且对它非常满意,但它似乎不是为测试中的依赖注入而设计的。

问题是,junit 是否适合在依赖注入上下文中运行测试,或者我是否应该切换到 TestNG?

澄清一下:我们正试图成为 DI 引擎不可知论者,目前正在研究 dagger。

如果意见有事实支持,我将不胜感激,谢谢。

【问题讨论】:

  • stackoverflow.com/questions/2425015/… 也许这会有所帮助
  • @ThorbjørnRavnAnderser 这个声明:“但它似乎不是为测试中的依赖注入而设计的”没有什么意义。 junit 和 DI 有什么关系?你能解释一下吗可能是>
  • @ThorbjørnRavnAndersen 当然,显而易见的答案是,如果你有春天...... :) 但我想你已经知道了。无论哪种方式,您都需要这个注入属性的来源的“上下文”。
  • 如果这是一个单元测试,那么不要使用 DI 框架。这将使它不是单元测试,而是集成测试。如果这实际上是一个集成测试,那么请使用您将在实际应用程序中使用的任何框架。这就是集成测试的用途。

标签: java junit dependency-injection testng


【解决方案1】:

假设您使用的是 Spring 框架

您可以像这样注释您的 Junit 测试类:

@RunWith( SpringJUnit4ClassRunner.class )  
@ContextConfiguration( "classpath:appTest-context.xml" )
public class AppServiceTest{
   ...
   ...
}

appTest-context.xml 内部有你的常规 Spring 配置文件,用于注入所有依赖项。

【讨论】:

  • OP 没有说 Spring 可用
  • 哦,可能我从标题中得到了错误的假设:dependency injection 让我在我的回答中做个说明。
【解决方案2】:

Junit 有@RunWith 注解,检查 org.springframework.test.context.junit4.SpringJUnit4ClassRunner

作为 Junit 测试中实现 DI 的示例

【讨论】:

    【解决方案3】:

    我不确定 JUnit(但通过看到其他答案似乎 JUnit 也可以),但在我们的应用程序中,我们使用 TestNG 运行测试用例,并且我们成功地注入了依赖项。

    【讨论】:

      猜你喜欢
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多