我正在運行使用TestNG作爲測試框架的Spring引導應用程序。我的測試設置是這樣的:未注入到BeforeSuite方法中的Spring依賴關係?
父類,它負責建立邏輯的,並採取所有配置的東西的護理:
@ContextConfiguration(classes = {TestingConfig.class}, initializers = ConfigFileApplicationContextInitializer.class)
@ContextConfiguration(classes = TestConfig.class)
@TestPropertySource(locations = "classpath:application.yml")
public abstract ParentTestClass extends AbstractTestNGSpringContextTests {
@Autowired
private ServiceClient serviceClient;
@BeforeSuite
public void beforeClass() {
Assert.assertNotNull(serviceClient);
serviceClient.doSomeSetupWork();
}
}
有多個孩子的測試類。每個繼承都構成父測試類,以便它們共享相同的設置邏輯。
public ChildTestClass1 extends ParentTestClass {
@Test
public void someTest() {
...
}
// More tests not shown
}
public ChildTestClass2 extends ParentTestClass {
@Test
public void anotherTest() {
...
}
// More tests not shown
}
serviceClient
是測試套件所依賴的Web服務之一的客戶端。在運行測試用例之前,我正在與服務客戶端進行通話以設置其他服務中的數據。
問題是這樣的:以前我使用@BeforeClass
註釋,這意味着父類的設置方法正在爲每個子測試類運行一次。這是好的,但它真的很慢,等待相同的設置多次運行。
所以我想:我只是將ParentTestClass中的@BeforeClass
註釋更改爲@BeforeSuite
!這將解決我所有的問題!
錯誤。
現在,當我運行它時,父類的beforeClass()
方法中的Assert.assertNotNull(serviceClient);
行失敗。 簡而言之,Spring依賴關係並沒有被注入@BeforeSuite註釋的方法,即使是在注入方法@BeforeClass
時它們被注入到方法中也不會被注入到中。
有什麼想法嗎?我真的很感激它!
非常不幸的是,他們只實現了它與BeforeClass註釋一起使用......它會爲我創造一大堆額外的工作:/感謝您爲它揭開一些光芒! – jtcotton63