簡體   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