Как запустить все тесты JUnit данного пакета? - PullRequest
6 голосов
/ 10 января 2010

Я использую JUnit 4 в затмении. У меня есть несколько тестовых классов в моем пакете, и я хочу запустить их все. Как?

Ответы [ 7 ]

10 голосов
/ 10 января 2010

Щелкните правой кнопкой мыши пакет в проводнике и выберите «Запуск от имени» и «Юнит-тест».

5 голосов
/ 18 апреля 2016

В eclipse, если вы щелкнете правой кнопкой мыши по папке и выберете Run As JUnit Test, будут выполняться только тесты в этой папке (то есть тесты во вложенных подпапках не будут выполняться). Чтобы запустить все тесты в каталоге, включая тесты во вложенных каталогах, вам нужно использовать что-то вроде googlecode.junittool box.

Используя это, я создал что-то вроде следующего

package com.mycompany.myproject.mymodule;

import org.junit.runner.RunWith;

import com.googlecode.junittoolbox.SuiteClasses;
import com.googlecode.junittoolbox.WildcardPatternSuite;

@RunWith(WildcardPatternSuite.class)
@SuiteClasses({ "**/*Test.class" })
public class RunAllMyModuleTests {
}

Я добавил необходимые зависимости (jar-файлы), используя это в моей сборке mavin (в дополнение к зависимости junit):

<dependency>
    <groupId>com.googlecode.junit-toolbox</groupId>
    <artifactId>junit-toolbox</artifactId>
    <version>1.5</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit-dep</artifactId>
    <version>4.8.2</version>
</dependency>

Щелкните правой кнопкой мыши по этому классу и выберите «Запуск от имени». Тест JUnit запускает все тесты в указанном каталоге, включая все тесты во вложенных подпапках.

4 голосов
/ 10 января 2010

с JUnit 4 Мне нравится использовать аннотированный AllTests класс:

@RunWith(Suite.class)
@Suite.SuiteClasses({ 

    // package1
    Class1Test.class,
    Class2test.class,
    ...

    // package2
    Class3Test.class,
    Class4test.class,
    ...

    })

public class AllTests {
    // Junit tests
}

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

4 голосов
/ 10 января 2010

Я использовал для объявления класса AllTests, чтобы я также мог запускать все тесты из командной строки:

public final class AllTests
{
  /**
   * Returns a <code>TestSuite</code> instance that contains all the declared
   * <code>TestCase</code> to run.
   * 
   * @return a <code>TestSuite</code> instance.
   */
  public static Test suite()
  {
    final TestSuite suite = new TestSuite("All Tests");

    suite.addTest(Test1.suite());
    suite.addTest(Test2.suite());
    suite.addTest(Test3.suite());

    return suite;
  }

  /**
   * Launches all the tests with a text mode test runner.
   * 
   * @param args ignored
   */
  public static final void main(String[] args)
  {
    junit.textui.TestRunner.run(AllTests.suite());
  }

} // AllTests

Где каждый тестовый класс определяет

  /**
   * Returns a <code>TestSuite</code> instance that contains all
   * the declared <code>TestCase</code> to run.
   * 
   * @return a <code>TestSuite</code> instance.
   */
  public static final Test suite()
  {
    return new TestSuite(Test1.class); // change the class accordingly
  }
2 голосов
/ 29 декабря 2017

С помощью JUnit5 вы можете легко создать класс "suite", который будет запускать все тесты в пакете (или даже в подпакетах, он работает рекурсивно):

@RunWith(JUnitPlatform.class)
@SelectPackages("my.test.package")
public class MySuite {
}

Как только это будет сделано, вы можете запустить этот пакет с помощью «Запуск от имени».

2 голосов
/ 10 января 2010

В проводнике пакетов вы можете использовать контекстное меню пакета и выбрать run as junit test.

1 голос
/ 10 января 2010

Щелкните правой кнопкой мыши по пакету и выберите «Запуск от имени» из подменю «Запуск от имени».

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