我有大量的測試用例與Spring Junit支持一起運行,每個測試都有以下注釋。如何創建和使用具有Spring + JUnit測試配置註釋的自定義註釋?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
而不是將所有這些註釋放在每個Test類上我想創建一個自定義註釋並使用它。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:spring/applicationContext.xml")
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
@ActiveProfiles("test")
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface SpringJUnit4TestConfig {
}
但是,當我使用此自定義註釋彈簧注射根本沒有發生。
@SpringJUnit4TestConfig
public class UserServiceTest
{
}
我在這裏失蹤了什麼?
PS: 但JUnit的@RunWith和Spring的@Transactional,@ContextConfiguration都具有@繼承。所以我認爲它應該工作。但現在我通過解決方案來解決它。創建一個基於抽象的類,並將所有這些註釋和測試用例擴展到該基類。
我應該只使用@Target({ElementType.TYPE})我不認爲你會在字段或參數中使用它,或者你會嗎? – Koitoer
你說得對。此自定義註釋應該僅在ElementType.TYPE上應用。 –
我也想做完全一樣的。閱讀問題和答案我創建了一個使用除'@ RunWith'之外的所有配置的註釋,並且目前看起來運行良好。我在每個TestCase類上使用'@RunWith(SpringJUnit4ClassRunner.class)'。 – ykesh