拓展阅读
test 系统学习-03-TestNG Spock testng 入门使用教程
junit5 系列
基于 junit5 实现 junitperf 源码分析
Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)
Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。)
快速入门
TestNG是一个受到JUnit和NUnit启发的测试框架,引入了一些新功能,使其更强大且更易于使用,例如:
- 注解。
- 使用各种可用策略在任意大的线程池中运行测试(每个方法在自己的线程中,每个测试类一个线程等)。
- 测试代码的多线程安全性。
- 灵活的测试配置。
- 支持数据驱动测试(使用@DataProvider)。
- 支持参数。
- 强大的执行模型(不再需要TestSuite)。
- 受多种工具和插件支持(Eclipse、IDEA、Maven等)。
- 嵌入BeanShell以提供更大的灵活性。
- 运行时和日志记录的默认JDK函数(无依赖)。
- 用于应用服务器测试的依赖方法。
TestNG被设计用于涵盖所有测试类别:单元测试、功能测试、端到端测试、集成测试等...
我开始使用TestNG是因为我对JUnit的一些不足感到沮丧,我在我的博客中记录了其中的一些问题,可以在这里和这里阅读。
阅读这些条目可能会让您更好地了解我尝试通过TestNG实现的目标。
您还可以查看主要功能的快速概述以及描述一个非常具体的示例的文章,其中多个TestNG功能的组合提供了一个直观且易于维护的测试设计。
以下是一个非常简单的测试示例:
package example1;
import org.testng.annotations.*;
public class SimpleTest {
@BeforeClass
public void setUp() {
// 当此测试被实例化时将被调用的代码
}
@Test(groups = { "fast" })
public void aFastTest() {
System.out.println("快速测试");
}
@Test(groups = { "slow" })
public void aSlowTest() {
System.out.println("慢速测试");
}
}
"setUp()" 方法将在构建测试类后、在运行任何测试方法之前被调用。
在这个例子中,我们将运行 "fast" 组,因此将调用 "aFastTest()" 方法,而 "aSlowTest()" 方法将被跳过。
需要注意的一些重要事项:
- 无需扩展类或实现接口。
- 即使上述示例使用了JUnit的约定,方法可以使用任何你喜欢的名称;关键是注解告诉TestNG它们的用途。
- 一个测试方法可以属于一个或多个组。
在将测试类编译到构建目录之后,可以使用命令行、Ant 任务(如下所示)或XML文件来调用测试:
<project default="test">
<path id="cp">
<pathelement location="lib/testng-testng-5.13.1.jar"/>
<pathelement location="build"/>
</path>
<taskdef name="testng" classpathref="cp"
classname="org.testng.TestNGAntTask" />
<target name="test">
<testng classpathref="cp" groups="fast">
<classfileset dir="build" includes="example1/*.class"/>
</testng>
</target>
</project>
使用 Ant 来调用它:
c:> ant
然后,您可以浏览测试结果:
start test-output\index.html(在Windows上)
要求
TestNG 版本在v7.5及以下:JDK 8 或更高版本。
TestNG 版本在v7.6.0及以上:JDK 11 或更高版本。