Ich habe eine große Anzahl von Testfällen, die mit Spring Junit Support mit folgenden Anmerkungen zu jedem Test ausgeführt wird.So erstellen und verwenden Sie eine benutzerdefinierte Annotation mit Spring + JUnit Test Config-Annotationen?
Anstatt alle diese Anmerkungen auf jede Testklasse zu setzen, möchte ich eine benutzerdefinierte Anmerkung erstellen und verwenden.
@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 {
}
Aber wenn ich diese benutzerdefinierte Annotation Spring Injection nicht überhaupt geschieht.
@SpringJUnit4TestConfig
public class UserServiceTest
{
}
Was fehlt mir hier?
PS: Aber JUnits @RunWith und Spring @Transactional, @ContextConfiguration haben alle @ Inherited..So dachte ich, es sollte funktionieren. Aber jetzt komme ich durch eine Arbeit durch. Eine Based Abstract-Klasse erstellt und all diese Anmerkungen und die Testfälle, die diese Basisklasse erweitern, hinzugefügt.
Ich sollte nur @Target ({ElementType.TYPE}) verwenden Ich glaube nicht, dass Sie dies in einem Feld oder Parameter verwenden werden, oder werden Sie? – Koitoer
Sie haben Recht. Diese benutzerdefinierte Anmerkung sollte nur für ElementType.TYPE gelten. –
Ich wollte auch genau das Gleiche machen. Beim Lesen der Frage und der Antwort habe ich eine Annotation erstellt, die alle Konfigurationen außer '@ RunWith' verwendet und bisher anscheinend gut funktioniert. Ich verwende @RunWith (SpringJUnit4ClassRunner.class) auf jeder TestCase-Klasse. – ykesh