2009-03-25 3 views
3

С JUnit 3, если вы забыли добавить тест в набор, он не будет запущен. Как я могу найти все тестовые примеры JUnit, которые не входят в наш пакет верхнего уровня, или любой пакет, который он рекурсивно содержит?Как найти модульные тесты не являются частью какого-либо набора?

ответ

1

Используя UCDetector, вы должны иметь возможность идентифицировать неиспользуемые общедоступные классы (которые включают неиспользованные тестовые примеры) из Eclipse.

1

Самый простой способ сделать это - использовать задачу 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> 
1

То, что мы сделали на нашем проекте было перебирать все файлы классов и посмотреть, что расширенный TestCase (вы ссылку на файл, сделайте класс clazz = Class.forName(), а затем сделать Test.isAssignableFrom (clazz), чтобы проверить.

это определенно получил грязное (иногда что-то есть базовый класс, который не должен быть запущен, например, и теми, кто должен был бы быть помечен).

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

Проблема в том, что все это происходит в JUnit4, что делает его мгновенным устаревшим кодом.

Лучшее, наиболее стабильное решение (до тех пор, пока JUnit не решает проблемы с выпуском пакета), чтобы иметь культуру разработки, которая либо называет все свои тесты с помощью преобразования имен (стандарт заканчивается на Test), и Ant запускает их, или при разработке теста выполняется только через набор.

1

покрытия кода, который включает в себя тестовый пакет будет подобрать любые тестовые классы, которые не работают

+0

+1 легкий путь! – guerda