上一篇讲了选择testng作为我们的单元测试基础框架,那么testng在项目中是怎么启动的呢,这里分为ide工具(idea)怎么启动和自动化运行怎么启动。
在讲清楚如何启动时,我们先写两个单元测试,新建一个maven工程的java项目,方式很简单,这里就不演示了,可以看下这个示例。
引入testng
在maven的pom.xml中引入testng的包,一般情况下我们会选择使用量最多的包。
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
新建两个test类。
public class DemoTest {
@Test
public void testFail(){
Assert.assertFalse(true);
}
@Test
public void testSuccess(){
Assert.assertTrue(true);
}
}
public class DemoV1Test {
@Test
public void testFail(){
Assert.assertFalse(true);
}
@Test
public void testSuccess(){
Assert.assertTrue(true);
}
}
idea 如何启动testng的单元测试
打开一个test文件,鼠标放在test类上,可以看到运行按钮。
启动执行即可。
我一般喜欢看到端到端的东西,到这里这里有两个疑问。
- idea是如何识别这个类或者这个方法是单元测试方法的呢?
- 我们的这个test类并没有main方法,点击运行的时候,idea是如何启动这个类的?
idea是如何识别单元测试
针对这个问题,没有找出官方答案,但是肯定是和idea识别main方法一样,idea看到一个类是public声明的,并且有@Test注解声明的方法,就会把这个类作为Test可以执行类,所以按照约定,一个方法可以通过Test执行的条件要满足如下:
- class是public声明。
- method也必须是public声明,可以带static, final等关键字,也可以不带。
idea是如何启动单元测试
既然@Test的类没有main方法,idea 肯定是通过插件的形式执行,我们到idea的插件库里搜索一下,果真能搜索到。
那么是不是我们diable这个插件之后,testng就不能运行了呢,我们试一下之后发现确实Test类上已经没有运行按钮了。
enable这个插件之后,就恢复正常了。
所以我们的结论是testng在idea上运行是通过插件来启动执行的。
maven是如何执行单元测试的
我们到项目目录下执行:
mvn install
控制台就输出以下结论。
和我们写的代码是一致的。
那我们执行mvn命令时不想执行单元测试怎么办呢,可以加上参数-DskipTests。
mvn install -DskipTests
执行结果就不再执行单元测试。