【问题标题】:Spring JUnit test autowired variable in tested classSpring JUnit测试测试类中的自动装配变量
【发布时间】:2013-10-10 12:40:00
【问题描述】:

我想测试一个通过@Autowired 注解注入资源的类。

class TestedClass{
  @Autowired
  private MyResource resource
  ...
}

如何在不修改测试类的情况下使这种注入工作?注入在测试类中工作正常,但在测试类中不行:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= "classpath*:/bean-definition.xml")
  public class TestedClassTest {
  TestedClass instance;

  //This works
  @Autowired
  private MyResource resource

  @Before
  public void setUp() throws Exception {
    instance = new TestedClass();
  }
...
}

那么问题可能是如何将上下文传递给被测试的类?

【问题讨论】:

    标签: java spring junit dependency-injection


    【解决方案1】:

    inject TestedClass 不要使用new() 创建,我假设它是一个bean。或者使用 setter 或构造函数将 myResource 注入到testedClass 中。

    【讨论】:

    • 没有测试的类不是bean,它只使用注入的资源。是否有意义?还是它也必须是豆子?我知道我可以通过 setter 或构造函数来做到这一点,但我认为必须有某种方法可以在不修改代码的情况下做到这一点。
    • 在部署应用程序时,testedclass 如何被实例化,就好像它没有被注入一样,我的资源将不会被设置。所以没有意义。
    • 好的。所以我创建了一个测试类的Component,现在它可以工作了。谢谢
    猜你喜欢
    • 2011-04-09
    • 2021-12-23
    • 2014-03-11
    • 2018-12-01
    • 2020-02-09
    • 1970-01-01
    • 2015-03-03
    • 2018-03-07
    • 2011-06-10
    相关资源
    最近更新 更多