我有大量的测试用例与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