Использование JUnit @Rule в бегуне JUnit Eclipse
-
12-12-2019 - |
Вопрос
Затмение 3.7.2
Я только что реализовал @Rule
в некоторых тестах JUnit 4, но когда я запускаю их в Eclipse, MethodRule
методы не вызываются.Это похоже на то, что программа запуска тестов Eclipse не распознает @Rule
реализации и не делает ничего особенного с полями, помеченными @Rule
.
Я даже пробовал использовать «Стандартное» MethodRule, например org.junit.rules.TestName
но он работает неправильно (имена тестов не заполняются в экземпляре).Даже пример теста в JavaDoc TestName
происходит сбой при запуске в Eclipse.
Есть ли какая-то хитрость?Eclipse просто не поддерживает JUnit? Правила?
Решение
Оказывается, кто-то включил, казалось бы, «обязательный» JAR в путь к классам рассматриваемого проекта во время выполнения.Этот JAR, помимо прочего, встраивает пакеты JUnit!Итак, есть этот JAR, названный как-то безобидно, например our_runtime_library.jar
в котором есть некоторый код, специфичный для приложения, а также некоторые неизвестные (но старые) версии JUnit, Spring и кто знает что еще.При запуске проекта в качестве модульного теста Eclipse использовал JUnit в этом JAR вместо своей собственной версии (как и должно быть, библиотеки, специфичные для проекта, всегда имеют приоритет), версии (Eclipse), на основе которой построен проект.
Какой беспорядок;Теперь предстоит выяснить, кто за это заслуживает 50 ударов плетью.
Другие советы
Это должно работать, по крайней мере, в моем Eclipse (во встроенном JUnit 4.8).Чтобы вы могли показать свой код.
Кроме того, JavaDoc говорит: Note that MethodRule is now deprecated, you should be using TestRule instead.