Как найти модульные тесты, не являющиеся частью какого-либо пакета? - PullRequest
3 голосов
/ 25 марта 2009

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

Ответы [ 4 ]

1 голос
/ 02 апреля 2009

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

1 голос
/ 26 марта 2009

Самый простой способ сделать это - использовать задачу ant junit и соглашение об именах для тестов (например, соответствует * Test.java).

Затем вы можете указать junit запускать каждый тест в * Test.java в вашем проекте. Ниже приведен усеченный пример из руководства ant .

<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 голос
/ 27 марта 2009

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

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

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

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

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

1 голос
/ 25 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...