Вопрос

Затмение 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top