2013-08-14 3 views
2

У меня есть простой класс arquillian test с 2 тестовыми примерами. Класс test имеет статическую переменную, которая в начале равна нулю. Первый тестовый пример установил значение для этой переменной, но при запуске второго теста значение переменной равно null. Я знаю, что это не правильный способ сделать это, поскольку один тест зависит от другого, его просто для примера.переменные класса теста Arquillian теряют значение

Другой подобный случай, когда я устанавливаю значение статической переменной в методе @BeforeClass. Когда выполняется первый тест, переменная снова будет нулевой. Только если я использую метод @Before, значения будут установлены правильно, но если у меня будет много тестов, а настройка переменных будет интенсивной, тогда это будет плохой альтернативой.

Я не совсем понимаю, почему это происходит. Если тест просто запускается как тест JUnit, то статические переменные работают так, как должны. есть ли лекарство от этого?

Тест выполняется с управляемым контейнером jboss.

ответ

3

Junit не позволяет передавать переменные между/среди тестовых случаев. Во время выполнения каждый тестовый пример будет иметь свою локальную копию переменных.

Обоснование такой конструкции просто, что тестовые случаи не должны зависеть друг от друга. И именно поэтому это называется модульным тестированием, где каждый блок должен быть независимо протестирован.

Но если вам действительно нужно это сделать, вы можете создать переменную класса static для хранения информации.

+0

Спасибо за быстрый ответ! Проблема в том, что если тест выполняется с Arquillian, то статические переменные, которые устанавливаются в @BeforeClass, также будут повторно инициализированы. Я соответствующим образом обновил свой вопрос. – Zuller

+0

@ Zuller, Не используйте тот же класс для хранения статических данных, и вы можете создать отдельный класс для хранения статических данных. –