У меня есть свои собственные аннотации для модульного тестирования, которые выглядят так:
@Retention(RetentionPolicy.RUNTIME)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
@Transactional(rollbackFor = MyException.class)
public @interface DefaultTestAnnotations {
}
Мои разные классы тестов помечаются как
@RunWith(SpringRunner.class)
// @SpringBootTest() <--------------(1)
@DefaultTestAnnotations
public class MyTest1 extends Basic4Tests {
Когда я запускаю MyTest1
индивидуально, чем это удается. Если я запустил его в более крупном соединении, он потерпит неудачу из-за некоторых странных ошибок объектов БД. Я пропускаю детали для краткости.
Когда я раскомментирую (1), тесты - по отдельности или в составе - пройдут успешно. Теперь я подумал, что аннотации @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
уже достаточно. Но, очевидно, нет.
Кто-нибудь имеет идею
- Что можно обобщить в декларации
@interface
? В том смысле, что они используются и являются «значимыми» - Почему мне нужно снова указывать
@SpringBootTest()
? Я думал, что декларации в interface
достаточно.
ОБНОВЛЕНИЕ :
«до некоторых странных сбоев объектов БД» - означает, что тест сохраняет данные в БД и при ее получении не удается правильно восстановить перечисления. Возникшие исключения указывают на то, что извлекаются некоторые ложные данные, которые, похоже, никогда не сохраняются. Отслеживание указанной проблемы c выходит за рамки этого вопроса, поскольку я нашел решение, которое я NOT понимаю. Чтобы не сталкиваться с подобными проблемами, я хочу больше пояснить, как можно использовать @interface
.