Maven + Junit5下的测试套件(JunitSuite)编写

慌乱的生活,忙乱的前进,一直在路上。没有办法静下来写这些学习的东西,如今生活暂且进入稳定阶段。也开始重新写一写自己学了些什么。

最近在学习软件测试这一门课,所用的测试项目是JpacMan,小小的框架包含的内容却非常的多。在国外的大学多用于测试类、开发类课程的实践应用。GitHub上也有许多相关的信息,如果有兴趣和充足的实践,可以去看一看,这里就不罗列具体的信息。

言归正传,第二部分的实验需要我们用TestSuite(测试套件)和Parallel Class Hierarchy(并行类层次结构)。对于并行类层次结构在本次实验中的应用目前还处于研究阶段,所以就只简单介绍一下TestSuite。

Junit5的功能非常强大的,并且在其Junit5用户指南中可以发现很多方法向Junit3和Junit4兼容,这一点做的非常棒。

然而在做实验的过程中发现,使用Eclipse直接新建JunitSuite生成的套件仅仅是基于Junit4的语法。

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses({})
public class AllTests {

}

如果之前设计的测试用例全部依托于Junit5(比如经常使用注解@BeforeEach等),这种Junit4框架不支持此类用例多用例同时测试的。在代码无误的情况下(正确使用@Test注解等)强行运行只会报同一个错误:

java.lang.Exception: No runnable methods

这里好玩的事情是,你配置测试属性的时候如果用Junit5是正常运行,但是运行时间为0.000s,覆盖率为0%。也就是Junit5目前还没有自己的单元测试套件,仍依托于Junit4(参考Junit5用户指南 - 4.4.4. Test Suite一节)。而使用Junit4进行配置运行就会出现上边的结果并且所有的方法都会变成initializationError。

更好玩的事是,在网上搜索此类错误,会发现烂大街的“加上@Test”等信息。

在参考Junit5用户指南 - 4.4.4. Test Suite之后,上边使用了一个新的Demo:

**此代码来源于Junit5用户指南**

import org.junit.platform.runner.JUnitPlatform;
import org.junit.platform.runner.SelectPackages;
import org.junit.runner.RunWith;

@RunWith(JUnitPlatform.class)
@SelectPackages("example")
public class JUnit4SuiteDemo {
}

当然你可能需要像Junit4自动生成的代码同样的功能(实用类)。参考用户指南,将属性值修改为Classes,即:

@SelectClassess( { TestCase1.class, TestCase2.class, ... } )

然后配置Junit4运行即可。同时对于运行结果你会很贴心的发现,有Junit Jupiter和Junit Vintage两种扩展模块。

简单来说
Jupiter是告诉你,我是Junit4核心的扩展模块(也可以叫我JUnit5)。Vintage是告诉你,如果你以前的项目用了Junit3和Junit4,但也想尝尝5的新鲜,别怕,放心用,我帮你撑着他们。

当然了,包只是包,Runner还是要根据代码的实际情况进行选择的,你用Junit4跑@BeforeEach肯定会出问题的。

以上如有技术问题、解释问题或涉及版权问题(包括转载),请及时联系我或留言,谢谢。
转载请注明出处,非常感谢。

你可能感兴趣的:(#,Software,Testing,Junit5,Junit,Suite,测试套件,Junit4)