拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Junit5对属性测验类执行测验

Junit5对属性测验类执行测验

白鹭 - 2022-02-25 2142 0 0

嗨,我得到了一个抽象的 BaseTest 和第二个这个 BaseTest 的 2 属性实作

我想在属性类上呼叫所有@Test。

一些代码:

public abstract class BaseTest<T> {

 public abstract T getInstance();
@BeforeEach
 public void setup(){
   this.instance = getInstance();
 }
@Test
all test methods ....

我想用这个 BaseTest 的 2 个实作创建第二个类,比如

class TwoImplOfBaseTest {
private BaseTest<Integer> testA;
private BaseTest<String> testB;

 @Test
 public void testAll(){
 //write something like testA.doAllTest();
     //write something like testB.doAllTest();

}

谢谢阅读

uj5u.com热心网友回复:

我认为你把它复杂化了。如果我理解正确,由于 A 和 B 之间的常见测验用例,您有 BaseTest 类。@Test 和几乎所有其他 junit 注释都是从超类继承的,除非该方法被覆写。在这种情况下,您只需要创建 BaseTest 的具体实作。JUnit 将初始化测验类实体,运行所有 @Test 方法等。

public class TestA extends BaseTest<Integer> {
  //init stuff if needed
}

和其他类

public class TestB extends BaseTest<String> {
  //init stuff if needed
}

就是这样,junit runner 将从 BaseTest 为 TestA 然后为 TestB 运行所有 @Test 方法。

uj5u.com热心网友回复:

如果您的目标是运行@Test抽象类中的所有方法以及所有扩展类,那么这已经发生了。您可以通过任何 IDE(Intellij/Eclipse)对此进行测验

但是,如果目标是以编程方式选择 N 个类,并直接从 Java 运行它们的方法,那么您可以按如下所述进行:

在我看来,最好遵循其他答案,因为这允许报告插件直观地向您显示通过/失败的内容和统计信息。

这取决于您要实作的目标:


 public class RunJUnit5TestsFromJava {

      SummaryGeneratingListener listener = new SummaryGeneratingListener();
  
      public void runASingleClass() {

          LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
              .selectors(selectClass(FirstUnitTest.class))
              .build();
            Launcher launcher = LauncherFactory.create();
            TestPlan testPlan = launcher.discover(request);
            launcher.registerTestExecutionListeners(listener);
            launcher.execute(request);
        }

     public void runAllClassesUnderPackage() {

            LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
              .selectors(selectPackage("com.package.where.your.test.classes.are"))
              .filters(includeClassNamePatterns(".*Test"))
              .build();
            Launcher launcher = LauncherFactory.create();
            TestPlan testPlan = launcher.discover(request);
            launcher.registerTestExecutionListeners(listener);
            launcher.execute(request);
        }
    }

 
    RunJUnit5TestsFromJava runner = new RunJUnit5TestsFromJava();
    runner.runAll();
    
    TestExecutionSummary summary = runner.listener.getSummary();
    summary.printTo(new PrintWriter(System.out));
    

参考:https : //www.baeldung.com/junit-tests-run-programmatically-from-java

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *