[跟着官方文档学TestNG][一][学习笔记]

举报
John2021 发表于 2022/04/30 20:46:40 2022/04/30
【摘要】 TestNG是一个受JUnit和NUnit启发的测试框架,但引入了一些新功能,使其更强大且更易于使用,例如:注解在具有各种可用策略的任意大的线程池中运行你的测试(所有方法在它们自己的线程中,每个测试类一个线程,等等…)测试你的代码是多线程安全的。灵活的测试配置。支持数据驱动测试(使用@DataProvider)。支持参数。强大的执行模型(不再有 TestSuite)。支持多种工具和插件(Ec...

TestNG是一个受JUnit和NUnit启发的测试框架,但引入了一些新功能,使其更强大且更易于使用,例如:

  • 注解
  • 在具有各种可用策略的任意大的线程池中运行你的测试(所有方法在它们自己的线程中,每个测试类一个线程,等等…)
  • 测试你的代码是多线程安全的。
  • 灵活的测试配置。
  • 支持数据驱动测试(使用@DataProvider)。
  • 支持参数。
  • 强大的执行模型(不再有 TestSuite)。
  • 支持多种工具和插件(Eclipse、IDEA、Maven 等)。
  • 嵌入 BeanShell 以获得更大的灵活性。
  • 用于运行时和日志记录的默认 JDK 函数(无依赖关系)。
  • 应用服务器测试的依赖方法。

TestNG旨在简化广泛的测试需求,从单元测试(单独测试其他类)到集成测试(测试由多个类,多个包甚至几个外部框架组成的整个系统,如应用程序服务器)。
编写测试通常分为三个步骤:

  • 编写测试的业务逻辑,并在代码中插入TestNG注解。
  • 在testng.xml文件或build.xml中添加有关测试的信息(例如类名、要运行的组等)。
  • 运行TestNG。

代码示例:

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.testng/testng -->
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.5</version>
        <scope>test</scope>
    </dependency>
</dependencies>
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class SimpleTest {
    @BeforeClass
    public void setUp() {
        //...
    }

    @Test(groups = {"fast"})
    public void aFastTest() {
        System.out.println("Fast test");
    }

    @Test(groups = {"slow"})
    public void aSlowTest() {
        System.out.println("Slow test");
    }
}

输出结果:

方法setUp()将在构建测试类之后和运行任何测试方法之前调用。在此示例中,我们将快速运行组,因此将调用 aFastTest()而跳过aSlowTest()。
注意事项:

  • 无需扩展类或实现接口。
  • 尽管上面的例子使用了JUnit约定,我们的方法可以被称为任何你喜欢的名字,它是告诉TestNG它们是什么的注解。
  • 一个测试方法可以属于一个或多个组。
  • TestNG要求JDK 8及以上。

本文档中使用的概念如下:

  • 一个套件由一个XML文件表示。它可以包含一个或多个测试,并由<suite>标记定义。
  • 测试由<test>表示,可以包含一个或多个TestNG类。
  • TestNG类是包含至少一个TestNG注解的Java类。它由<class>标记表示,可以包含一种或多种测试方法。
  • 测试方法是在源代码中由@Test注解的Java方法。

TestNG测试可以通过@BeforeXXX和@AfterXXX注解来配置,它们允许在某个点之前和之后执行一些Java逻辑,这些点是上面列出的项目之一。

教程其余部分将解释以下内容:

  • 带有简要说明的所有注释的列表。这将了解TestNG提供的各种功能,但可能需要查阅专门针对每个注解的部分以了解详细信息。
  • testng.xml文件的描述、其语法以及可以在其中指定的内容。
  • 各种功能的详细列表以及如何结合注释和testng.xml使用它们。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。