繁体   English   中英

Groovy Spock如何接线或模拟弹簧自动接线接口

[英]Groovy Spock How to Wire or Mock Spring Autowired Interface

我有这样的课

public abstract class JobProcessor {
    @Autowired
    ApplicationContext applicationContext;
    protected void startProcess() {
        MyThread myThread= (MyThread) applicationContext.getBean("myThread");
        myThread.setConversionObject(new MyObject());
        ...
    }
}

我想为JobProcessor编写单元测试。 JobProcessor是一个抽象类。它与作为接口的ApplicationContext自动关联。

我的测试是这样的

@SpringBootTest(classes = JobProcessorApplication.class)
@ContextConfiguration(locations = "classpath:InjectionContext.xml")
@TestPropertySource(locations = "classpath:test.properties")
@Import(UnitTestConfiguration)
class JobProcessorSpec extends Specification {
    class JobProcessorChild extends JobProcessor {

        @Override
        boolean processRequest() {
            return false
        }

        def "Should start process"() { 
            given: 
            def jobProcessorChild = new JobProcessorChild()
            when:
            jobProcessorChild.startProcess()
            then:
            noExceptionThrown()
        }
    }
}

由于applicationContext的nullpoint错误,我的测试总是失败。有人可以指导我如何在此处正确编写单元测试吗?

单元测试应在不构建applicationContext的情况下运行。 您必须将其替换为模拟对象,然后将其传递给测试中的对象的构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM