С JUnit 3, если вы забыли добавить тест в набор, он не будет запущен. Как я могу найти все тестовые примеры JUnit, которые не входят в наш пакет верхнего уровня, или любой пакет, который он рекурсивно содержит?Как найти модульные тесты не являются частью какого-либо набора?
ответ
Используя UCDetector, вы должны иметь возможность идентифицировать неиспользуемые общедоступные классы (которые включают неиспользованные тестовые примеры) из Eclipse.
Самый простой способ сделать это - использовать задачу ant junit и соглашение об именах для тестов (например, * Test.java).
Затем вы можете сообщить junit о запуске каждого теста в * Test.java в вашем проекте. Ниже приведен усеченный пример, взятый из ant manual.
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<pathelement location="${build.tests}"/>
<pathelement path="${java.class.path}"/>
</classpath>
<formatter type="plain"/>
<batchtest fork="yes" todir="${reports.tests}">
<fileset dir="${src.tests}">
<include name="**/*Test*.java"/>
<exclude name="**/AllTests.java"/>
</fileset>
</batchtest>
</junit>
То, что мы сделали на нашем проекте было перебирать все файлы классов и посмотреть, что расширенный TestCase (вы ссылку на файл, сделайте класс clazz = Class.forName(), а затем сделать Test.isAssignableFrom (clazz), чтобы проверить.
это определенно получил грязное (иногда что-то есть базовый класс, который не должен быть запущен, например, и теми, кто должен был бы быть помечен).
Зная, если это в наборе еще сложнее. Я бы использовал свой собственный класс компоновщика пакетов и потребовал, чтобы все его комплекты были построены с его помощью, и добавим к нему логику для записи всех существующих классов, которые на который ссылается строитель, который затем передает их на контрольную панель, а контролер знает, что они учитываются.
Проблема в том, что все это происходит в JUnit4, что делает его мгновенным устаревшим кодом.
Лучшее, наиболее стабильное решение (до тех пор, пока JUnit не решает проблемы с выпуском пакета), чтобы иметь культуру разработки, которая либо называет все свои тесты с помощью преобразования имен (стандарт заканчивается на Test), и Ant запускает их, или при разработке теста выполняется только через набор.
покрытия кода, который включает в себя тестовый пакет будет подобрать любые тестовые классы, которые не работают
+1 легкий путь! – guerda