Дженкинс и Юнит аннотации - PullRequest
       11

Дженкинс и Юнит аннотации

3 голосов
/ 13 декабря 2011

У меня есть некоторые проблемы с моим набором тестов и Дженкинсом.

Мой TestSuite выглядит просто так:

@RunWith(Suite.class)
@SuiteClasses( { CompanyRepositoryTest.class,
StudentRepositoryTest.class })
public class ServiceTestSuite {}

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

junit.framework.AssertionFailedError: No tests found in com.example.suite.ServiceTestSuite

Я предполагаю, что это как-то связано с аннотациями, не полученными Jenkins.Могу ли я что-нибудь сделать, чтобы устранить эту проблему?

РЕДАКТИРОВАТЬ: Это тестовая часть из нашего Ant build.xml.

    <junit fork="yes" printsummary="withOutAndErr" >
        <formatter type="xml"/>
        <test name="test.ibm.teknikspranget.suite.ServiceTestSuite" todir="${junit.output.dir}"/>
        <classpath refid="compile.classpath"/>
    </junit>

Итак, мы на самом деле пытаемся запустить тестовый набор из Ant.Должны ли мы проводить каждый отдельный тест?Похоже, что мы запускаем Ant 1.8.2 с Jenkins, так что проблем не должно быть.

1 Ответ

3 голосов
/ 14 декабря 2011

Это потому, что вы запускаете его как тест JUnit 3, а не тест JUnit 4. Вы можете сказать это, потому что классы junit.framework. * - это JUnit 3, а классы org.junit. * - это JUnit 4. Ваше сообщение об ошибке:

junit.framework.AssertionFailedError: No tests found in com.example.suite.ServiceTestSuite

Если вы запускаете тесты с помощью бегуна JUnit 3, он будет искать метод с именем suite() в вашем TestSuite, он не будет использовать аннотации. Вам необходимо запустить его с помощью JUnit 4, например org.junit.runner.JUnitCore или аналогичного.

Как это исправить, зависит от того, как вы вызываете это в Jenkins. Если вы используете ant, используйте версию более позднюю, чем 1.7, и она должна работать.

Если вы используете maven, используйте версию библиотеки JUnit> 4, попробуйте 4.11. Если это по-прежнему не работает по какой-либо причине, вы можете заставить провайдера перейти на junit 4, добавив следующее в ваш pom:

<plugins>
[...]
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.11</version>
    <dependencies>
      <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>surefire-junit47</artifactId>
        <version>2.11</version>
      </dependency>
    </dependencies>
  </plugin>
[...]
</plugins>

Это от: Surefire: Использование JUnit .

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