如何运行给定包的所有JUnit测试?

时间:2010-01-10 10:48:05

标签: java eclipse junit

我在eclipse中使用JUnit 4。我的包中有一些测试类,想要运行它们。怎么样?

7 个答案:

答案 0 :(得分:9)

右键单击包浏览器中的包,然后选择“运行方式”和“单元测试”。

答案 1 :(得分:5)

在eclipse中,如果右键单击该文件夹并选择Run As JUnit Test,则只运行该文件夹中的测试(即不会运行嵌套子文件夹中的测试)。为了在包含嵌套目录中的测试的目录中运行所有测试,您需要使用googlecode.junittool框之类的东西。

使用这个我创建了类似下面的内容

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 {
}

我在我的mavin构建中添加了所需的依赖项(jar文件)(除了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>

右键单击此类并选择Run As JUnit test将运行指定目录中的所有测试,包括嵌套子文件夹中的所有测试。

答案 2 :(得分:4)

我曾经声明一个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
  }

答案 3 :(得分:4)

使用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 :(得分:2)

在包浏览器中,您可以使用包的上下文菜单,然后选择run as junit test

答案 5 :(得分:2)

使用JUnit5,您可以轻松创建一个“套件”类,它将在包中运行所有测试(甚至是子包,它以递归方式工作):

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

完成后,您可以使用“Run as Test”运行此套件。

答案 6 :(得分:1)

右键单击包,然后从“运行方式”子菜单中选择“运行为测试”。