【问题标题】:Unit testing with SpringJUnit4ClassRunner using only @Component and @Autowired仅使用 @Component 和 @Autowired 使用 SpringJUnit4ClassRunner 进行单元测试
【发布时间】:2018-11-14 20:22:57
【问题描述】:

我有以下课程:

@Component
public class MyClass {
    @Autowired MyPojo pojo;
}

如何在不模拟注入的 bean 的情况下对其进行测试?我没有有配置 [XML 或声明性]。 我做了以下事情:

@RunWith(SpringJUnit4ClassRunner.class)
@ComponentScan
public class MyClassTest {
    @Autowired MyClass myClass;

    @Test
    public void test() {
        this.myClass...()
    }
}

【问题讨论】:

  • 你想在那个 test() 函数中做什么。请详细说明

标签: java spring junit springjunit4classrunner


【解决方案1】:

如果您不想使用任何类型的配置,无论是 Java 还是 XML 配置,您都可以使用 @ContextConfiguration 并列出您的组件类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { MyPojo.class, MyClass.class })
public class MyClassTest {

    @Autowired 
    private MyClass myClass;

    @Test
    public void test() {
        // myClass...
    }
}

请注意MyPojo 类也应该用@Component 注释。

但是,在现实生活场景中,您可能至少需要一个@Configuration 类(也可以与@ContextConfiguration 一起使用)。

有关 Spring 集成测试支持的更多信息,请参阅 Spring Documentation

【讨论】:

  • 我最终按照您的描述将这些类添加到了 ContextConfiguration 中。事实证明,对于我的场景,我不需要 @configuration 类,因为我的用例仅适用于组件和自动装配。在这种情况下,我对初始化 bean 没有用处。
猜你喜欢
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
  • 2016-02-27
  • 2014-07-10
  • 1970-01-01
  • 2011-10-09
  • 2015-03-06
  • 2011-02-20
相关资源
最近更新 更多