当前位置: 首页 > 面试题库 >

如何在JUnit 4中动态创建测试套件?

翟淇
2023-03-14
问题内容

我想使用JUnit 4创建一个junit测试套件,在运行测试套件之前,要包含的测试类的名称是未知的。

在JUnit 3中,我可以这样做:

public final class MasterTester extends TestCase
{
  /**
   * Used by junit to specify what TestCases to run.
   * 
   * @return a suite containing what TestCases to run
   */
  public static TestSuite suite() {
    TestSuite suite = new TestSuite();

    for(Class<?> klass : gatherTestClasses()) {
      suite.addTestSuite(klass);
    }

    return suite;
  }
}

并让该gatherTestClasses()方法确定要运行的测试类。

在JUnit
4中,文档说要使用批注:@SuiteClasses({TestClass1.class, TestClass2.class...})构建我的测试套件。有许多SO答案显示了如何执行此操作。不幸的是,我看到的示例似乎不允许传递动态生成的TestClasses列表。

这样的建议我必须继承BlockJUnit4ClassRunner我不想做的子类。

动态指定的测试套件似乎必须放在​​JUnit 4中。有人知道吗?


问题答案:

当我在测试类上使用命名约定时,我发现Classpath套件非常有用。

https://github.com/takari/takari-cpsuite

这是一个例子:

import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.runner.RunWith;

@RunWith(ClasspathSuite.class)
@ClassnameFilters({".*UnitTest"})
public class MySuite {
}


 类似资料:
  • 主要内容:1 概述,2 创建简单的Maven项目,3 项目包装结构,4 更新pom.xml文件中的JUnit依赖关系,5 创建LoginService.java和LoginServiceTest.java,,6.创建UserService.java和UserServiceTest.java,7 创建测试套件,8 结论1 概述 在本指南中,我们将学习如何一次运行多个测试类。将Suite用作运行程序可以使您手动构建一个包含许多类测试的套件。它等效于JUnit 3.8.x静态Test suite()方

  • 我有两个TestSuite类(和) 他们看起来是这样的: 如何并行运行它们?我运行一个这样的测试$mvn class test-Dtest=TestSuiteOne 但我如何同时运行它们呢?

  • 假设我有10个spring boot test类(用@runwith(springrunner.class)和@springboottest注释) 每个测试需要启动spring容器大约10秒,尽管容器可能会执行相同的init。 所以我可能需要100秒进行“MVN测试”。 null

  • 我使用的是JUnit5Vintage,所以我的测试任务同时运行JUnit4和JUnit5测试。

  • 刚刚下载了基于智能理念的Android Studio。 如何创建测试? 我注意到有一个创建测试模块选项,但是这似乎没有做任何事情,只是用src创建一个新的项目 我还试着按下热键CTRL-AlTT,它允许在现有类上创建单元测试,但它似乎希望将其放在当前项目中。当然,这对TDD没有帮助 有人在这里有经验吗?

  • 我有数百个用Spock编写的测试规范。所有这些都是功能测试,可以独立运行。但我遇到了一种情况,在运行其他测试之前,我需要运行一个特定的测试。 使用Junit测试套件很容易实现这一点,而且在Eclipse中非常简单。但由于我所有的测试都是groovy测试,所以在Spring IDE中为spock测试(用groovy编写)创建测试套件并不容易。 有人能分享一些关于我们如何创建测试套件、运行一些特定测试