1.概述

在本教程中,我们将显示如何直接从Java代码运行JUnit测试- 有方案可以帮助此选项。

如果您是新junit,或者如果要升级到JUnit 5,则可以查看一些许多教程我们有主题。

2. Maven依赖项

我们需要几个基本依赖项来运行JUnit 4和JUnit 5测试:

<依赖关系> <依赖项>  org.junit.jupitor   JUNIT-JUPITER-ENGINE   5.2.0   test   <依赖项>  org.junit.platform   JUNIT-Platform-Launcher   1.2.0    // for forJUnit 4 <依赖项>  JUnit   JUNIT   4.12   test  

最新版本JUNIT 4,JUNIT 5., 和JUNIT平台发射器可以在Maven Central上找到。

3.运行JUNIT 4测试

3.1。测试场景

对于JUNIT 4和JUNIT 5,我们将设置一些“占位符”测试类,这足以证明我们的例子:

公共类firstunittest {@test public void whenthis_thenthat(){asserttrue(true);@test public void whensomething_thensomething(){asserttrue(true);@test公共void whensomethingelse_thensomethingelse(){asserttrue(true);}}
公共类yexunittest {@test public void whensomething_thensomething(){asserttrue(true);@test公共void whensomethingelse_thensomethingelse(){asserttrue(true);}}

使用JUNIT 4时,我们创建测试类添加@测试注释每个测试方法。

我们还可以添加其他有用的注释,例如@前或者@后,但这并不是在本教程的范围内。

3.2。运行单个测试类

要从Java代码运行JUnit测试,我们可以使用Junitcore.班级(添加TextListener.类,用于显示输出的system.out.):

Junitcore Junit = New Junitcore();JUNIT.ADLISTENER(新TextListener(System.out));JUNIT.RUN(Firstunittest.class);

在控制台上,我们会看到一条非常简单的消息,指示成功的测试:

运行一个测试类:..时间:0.019 OK(2个测试)

3.3。运行多个测试类

如果我们想要指定多个测试类使用JUNIT 4,我们可以使用与单个类相同的代码,并只需添加其他类:

Junitcore Junit = New Junitcore();JUNIT.ADLISTENER(新TextListener(System.out));结果结果= JUNIT.RUN(FirstUnittest.class,secondunittest.class);ResultReport(结果);

请注意,结果存储在JUnit的实例中结果类,我们正在使用简单的实用程序方法打印出来:

公共静态void resularteport(结果结果){system.out.println(“完成。结果:失败:”+ result.getfailureCount()+“。忽略:”+ result.getignoreCount()+“。测试运行:”+结果.getrunco​​unt()+“。时间:”+结果.getRuntime()+“MS”);}

3.4。运行测试套件

如果我们需要组合一些测试类以运行它们,我们可以创建一个testsuite.。这只是一个空的类,我们使用JUnit注释指定所有类:

@runwith(suite.class)@ suite.suiteclasses({firstunittest.class,secondunittest.class})public类mytestsuite {}

要运行这些测试,我们将再次使用与之前的代码相同:

Junitcore Junit = New Junitcore();JUNIT.ADLISTENER(新TextListener(System.out));结果结果= JUNIT.RUN(MyTestSuite.class);ResultReport(结果);

3.5。运行重复测试

Junit的一个有趣的功能是我们可以通过创建实例重复测试重复。当我们测试随机值或性能检查时,这可能会非常有用。

在下一个例子中,我们将从中运行测试Mergeliststest.五次:

测试测试= new junit4testapter(firstunittest.class);重复repectedtest =新的重复(测试,5);Junitcore Junit = New Junitcore();JUNIT.ADLISTENER(新TextListener(System.out));JUNIT.RUN(重复最终);

在这里,我们正在使用JUNIT4TESTADAPTER.作为我们的测试课程的包装器。

我们甚至可以以编程方式创建套房,应用重复测试:

testsuite mysuite = new activeTestsuite();Junitcore Junit = New Junitcore();JUNIT.ADLISTENER(新TextListener(System.out));mysuite.addtest(新的Repectedtest(新junit4testapter(firstunittest.class),5));mysuite.addtest(新的Repectedtest(新junit4testAdapter(secondunittest.class),3));JUNIT.RUN(MYSUITE);

4.运行JUNIT 5测试

4.1。测试场景

使用JUNIT 5,我们将使用与以前的演示相同的样本测试类 -Firstunittest.第二个,由于不同版本的JUnit框架,如包装,那样微小的差异@测试和断言方法。

4.2。运行单个测试类

要从Java代码运行JUnit 5测试,我们将设置一个实例launcherdiscoveryrequest.。它使用Builder类,我们必须设置包选择器和测试类名过滤器,以获取我们想要运行的所有测试类。

然后,此请求与启动器关联,并且在执行测试之前,我们还将设置测试计划和执行侦听器。

这两个都将提供有关要执行的测试的信息以及结果:金宝搏官网188be

公共类Runjunit5testsfromjava {summarygenerationListener listener = new sumputuregenerationListener();public void runone(){launcherdiscoveryrequest请求= launcherdiscoveryrequestbuilder.request().selectors(SelectClass(FirstUnittest.class)).build();Launcher Launcher = LauncherFactory.Create();testplan testplan = launcher.discover(请求);Launcher.registertestexecutionListeners(侦听器);Launcher.execute(请求);} //主要方法...}

4.3。运行多个测试类

我们可以将选择器和过滤器设置为运行多个测试类的请求。

让我们看看我们如何设置包选择器和测试类名过滤器,以获取我们想要运行的所有测试类:

public void runall(){launcherdiscoveryrequest请求= launcherdiscoveryrequestbuilder.request().selectors(selectpackage(“com.baeldung.j金宝搏188体育unit5.runfromjava”)).filters(includeClassnamePatterns(“。* test”)).build();Launcher Launcher = LauncherFactory.Create();testplan testplan = launcher.discover(请求);Launcher.registertestexecutionListeners(侦听器);Launcher.execute(请求);}

4.4。测试输出

在里面主要的()方法,我们调用我们的课程,我们还使用侦听器获取结果细节。这次结果存储为一个testexecutionsummary.

仅通过打印到控制台输出流的最简单方法:

公共静态void main(String [] args){runjunit5testsfromjava runner = new runjunit5testsfromjava();runner.runall();testexecutionsummary摘要= runner.listener.getsummary();summary.printto(新打印机(System.out));}

这将为我们提供我们的测试运行的细节:

在177 ms [找到7个容器]后完成测试运行[0个容器跳过] [7个容器启动] [0容器中止] [7个容器成功] [0容器失败] [找到了第10个测试] [0测试跳过] [10测试跳过] [0测试中止] [10测试成功] [0测试失败]

结论

在本文中,我们已经示出了如何从Java代码,覆盖JUnit 4以及最近的JUnit 5版本的junit测试,以及该测试框架的最新版本。

一如既往地,这里所示的示例的实现是在Github上可用的JUNIT 5示例, 也JUNIT 4.

通用底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程
评论在本文上关闭!