我有一個通用代碼庫,需要使用不同的實現和運行時配置進行測試。思考多個DAO實現的服務。我有測試Dao接口的通用單元測試(需要Dao autowired),並且我想從不同的項目調用這些測試。在不同的項目中使用多個Spring上下文運行JUnit測試
基本上我想要這樣的東西。 在共享的通用項目中,我的測試將會存在。 所以基本上,在共享項目中,我有我的測試,例如。
public class ApiTest {
@Autowired
DaoBase myDao;
@Test
public void testSomething(){
}
}
然後在實現了道的其他項目(S),我會:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { ImplementationConfigA.class })
public class ImplemtationTesterA {
//somehow invoke ApiTest.class?
}
。
@Configuration
public class ImplementationConfigA{
@Bean
DaoBase daoBase {
return new DaoImplementationGraphDB();
}
}
同樣,有多個項目以不同的方式實現DAO層,我想共享通用測試。
如果我可以將@RunWith(SpringJUnit4ClassRunner.class)和@RunWith(Suite.class)結合起來,那就是我的願望,但這似乎不可能。即這將是我想要的有效,這是不可能的:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { ImplementationConfigA.class })
@RunWith(Suite.class)
@Suite.SuiteClasses({ ApiTest.class })
public class ImplemtationTesterA {
...
有一定的技巧,讓這樣的工作..任何想法?謝謝!
我不認爲使用配置文件解決了這個問題;即從ImplementationTesterA我需要使用ImplementationConfigA中指定的上下文運行類ApiTest中的所有測試。換句話說,Spring的SpringJUnit4ClassRunner並沒有提供與@RunWith(Suite.class)和@ Suite.SuiteClasses({ApiTest.class})等效的機制,至少據我所知可以。 – crig
但是,您可以使用配置文件實現相同的功能,這就像是要運行哪一組測試的標籤。 –
但我不能結合@RunWith(SpringJUnit4ClassRunner.class)和@RunWith(Suite.class)。所以從Spring測試類ImplemtationTesterA中,我如何獲得它來運行類ApiTest中的所有測試(它在不同的項目中)? ApiTest具有API的通用測試,並且不知道這些實現的各種實現或配置。它所知道的是它期望實現接口被注入。我希望多個實現都能夠使用這些共享測試。 – crig