2016-01-11 3 views
2

Вопросы, относящиеся задаваемые вопросы here.Почему тесты JUnit запускаются дважды из Eclipse?

One (непринятые) answer состояния:

тестовый класс всегда будет запускаться непосредственно, а затем через «связь» в свите. Это так, как ожидалось.

Может кто-нибудь объяснить, что это на самом деле означает, и можно ли предотвратить тесты, выполняемые дважды.

Когда я запускаю тесты из командной строки с помощью mvn test, они запускаются только один раз.

UPDATE

У меня есть набор тестов определяется следующим образом:

@RunWith(Suite.class) 
@SuiteClasses({ TestCase1.class, TestCase2.class }) 
public class MyTestSuite 
{ 
} 
+1

Как вы управляете ими? Щелкните правой кнопкой мыши -run (где, уровень проекта или уровень тестового пакета)? У вас тоже есть набор тестов - тоже на одном уровне? –

+1

Если вы запускаете тесты на уровне проекта, то выполняется TestCase1 и выполняется MyTestSuite, который снова запускает TestCase1. – James

ответ

3

Когда вы запускаете тесты в Eclipse на уровне проекта (или уровне пакета), Eclipse ищет исходные папки проекта для классов JUnit (или выбранного пакета). Это все классы с аннотациями @Test и всеми классами с @RunWith (возможно, еще немного). Затем для всех этих классов он запускает их как тесты.

В результате этого поведения, если у вас есть класс класса, который ссылается на классы тестов в одном проекте, эти тесты будут выполняться дважды. Если бы у вас был другой набор, который бы сделал то же самое, они будут работать три раза и так далее. Чтобы понять это поведение попробуйте запустить пакет, содержащий один тест дважды, например:

@RunWith(Suite.class) 
@SuiteClasses({ TestCase1.class, TestCase1.class }) 
public class TestSuite {} 

Принятая стратегия здесь, чтобы определить набор или апартаменты для проекта прогоне их исключительно. Не запускайте тесты на уровне проекта, а запускайте только выбранные сюиты.

Что касается Maven, я подозреваю, что его конфигурация по умолчанию только выбирает класс класса и пропускает тестовые примеры. Если бы он был настроен по-другому, он будет вести себя так же, как Eclipse.

0

Elipse тесты 2 классов и даст вам 2 результаты. Maven тестирует 2 класса и дает вам один результат с 2-мя результатами.

Я думаю, что это что-то вроде этого, но все же самое главное, что результат положительный! :) С уважением!

Смежные вопросы