В Junit4, Как изменить поведение @Before на основе аннотаций @Test - PullRequest
2 голосов
/ 28 октября 2011

Мне бы хотелось, чтобы мой метод @Before знал аннотации выполняемых в настоящее время тестов, чтобы метод @Before мог выполнять различные действия. В частности, прямо сейчас наш @Before всегда выполняет различные шаги инициализации, такие как перезагрузка базы данных и т. Д. Я хотел бы иметь возможность писать код, подобный этому:

@Before
void setUp() {
    if (testMethod.hasAnnotation(@NeedsDatabase)) {
        reloadDatabase();
    }
}

Я полагаю, что одним из решений было бы использование @Rule для инициализации БД, но это было бы сложно реализовать, и наша существующая инфраструктура уже обрабатывает это в @setUp. У нас уже есть пользовательский Runner, и все тесты расширяют общий базовый класс, если это помогает.

Я пытался придумать, как это сделать, но я не знаю, что доступно в JUnit4.

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

Вы можете использовать аннотацию @ RunWith и создать свой собственный ParentRunner , который сканирует аннотацию @NeedsDatabase и соответствующим образом обрабатывает настройки.

1 голос
/ 28 октября 2011

Используйте @Rule с TestWatcher и запустите реализацию ()

http://kentbeck.github.com/junit/javadoc/latest/org/junit/rules/TestWatcher.html#starting%28org.junit.runner.Description%29

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...