19 个最受欢迎的 TestNG 面试问题及答案(2025 年)
以下是 TestNG 面试问题和答案,可帮助应届毕业生和有经验的应聘者获得理想的工作。
1)什么是TestNG?
TestNG 是一个自动化开源测试框架。它基于 JUnit 框架,但不是 JUnit 扩展。
2)TestNG 的特点是什么?
TestNG 功能包括
- TestNG 使用更多 OO(面向对象)和 Java 特性
- 支持测试集成类
- 支持不同的注释
- 将编译时测试代码与数据信息/运行时配置分开
- 运行时配置灵活
- 灵活插件 API
- 为了进一步提高灵活性,嵌入了 BeanShell
- 多线程 Selenium 测试支持
- 支持并行测试、负载测试、部分故障、依赖测试方法
- 测试编译完成后,可以向 TestNG 发出请求,运行所有“前端”测试或“慢速”、“快速”、“数据库”测试,
- 对于同一个测试类TestNG支持多个实例
- 对于日志记录,没有依赖项,用于日志记录和运行时的默认 JDK 函数
3)列出TestNG相对于Junit的优势?
TestNG 相对于 JUnit 的优势包括
- 与 JUnit 注释相比,TestNG 易于理解
- 与 JUnit 不同,TestNG 不需要声明 @Before Class 和 @After Class
- TestNG 中没有方法名称约束
- TestNG 允许您轻松地对测试用例进行分组,这在 JUnit 中是不可能的
- TestNG 支持以下三种附加设置:@Before/After Suite、@Before/After Test 和 @Before/After Group
- TestNG 不需要扩展任何类
- 在 TestNG 中,可以并行运行 selenium web driver 测试用例
- 基于组TestNG允许您执行测试用例
- TestNG 允许您确定依赖的测试用例;每个测试用例都独立于另一个测试用例
4)编写TestNG测试需要哪些基本步骤?
编写 TestNG 所需的基本步骤包括
- 写下测试的业务逻辑并在代码中插入 TestNG 注释
- 在构建中。XML 或 testing.xml,添加有关测试的信息
- 运行 TestNG
5) 列出调用TestNG的各种方式。
TestNG 可以通过不同的方式调用,例如
- 运用 月食
- 有蚂蚁
- 从命令行
- 使用 IntelliJ 的 IDEA
6)解释testng.xml文件的使用
文件 testing.xml 以 XML 格式捕获您的整个测试。此文件可让您轻松地在一个文件中定义所有测试套件及其参数,您可以在代码存储库中验证这些参数或通过电子邮件发送给同事。它还让您可以轻松地提取测试的子集或拆分多个运行时配置。
7)在 TestNG 中如何禁用测试?
要禁用您不想要的测试用例,您可以使用注释@Test(enabled = false)。
8)TestNG 中的 Time-Out 测试是什么?
TestNG 中的超时测试只不过是执行单元测试所分配的时间。如果单元测试未能在特定时间限制内完成,TestNG 将放弃进一步的软件测试并将其标记为失败。
9)解释异常测试
TestNG 提供了跟踪代码异常处理的选项。您可以测试代码是否抛出了预期的结果。预期的异常参数与 @Test 注释一起使用。
10)TestNG 中的“套件测试”起什么作用?
当你需要同时运行多个单元测试时,可以使用“套件测试”来执行。“套件测试”会将这些单元测试捆绑在一起。使用 XML 文件来运行套件测试。
11)什么是参数化测试?
参数化测试允许开发人员使用不同的值反复执行相同的测试。TestNG 允许你通过两种不同的方式将参数直接传递给测试方法。
- 使用 testing.xml
- 使用数据提供者
12) 如何使用 TestNG 运行 JUnit 测试?
您可以使用 TestNG 运行 JUnit 测试
- 将 JUnit 库放在 TestNG 类路径上,以便它可以找到并使用 JUnit 类
- 在 Ant 中将测试运行器从 JUnit 更改为 TestNG,然后在“混合模式”下运行 TestNG。这将使您的所有测试都处于相同的
这种方法还使您能够将现有的 JUnit 测试转换为 TestNG。
13)@Test(invocationCount=?) 和 (threadPoolSize=?) 表示什么?
- @Test(线程池大小=?): threadPoolSize 属性告诉 TestNG 形成一个线程池,通过多个线程来运行测试方法。有了线程池,测试方法的运行时间大大减少。
- @测试(调用次数=?): 调用计数表示 TestNG 应运行此测试方法的次数
14) 有哪些不同的方法可以生成 TestNG 结果报告?
使用 Test NG 生成报告有两种方法,分别是
- 听众: 对于要实现的监听器类,该类必须实现 org.testng./TestListener 接口。TestNG 在运行时会通知这些类测试何时开始、结束、跳过、通过或失败。
- 记者: 对于要实现报告的类,该类必须实现 org.testng/Reporter 接口。当整个套件运行结束时,将调用这些类。调用时,将整个测试运行的信息组成的对象传递给此类。
15)TestNG 中的组测试是什么?
这是 TestNG 的一项新功能;它允许您将方法分派到适当的部分,并对测试方法进行分组。使用组测试,您不仅可以声明属于组的方法,还可以指定包含其他组的测试组。组是使用组测试在 Testing.xml 文件中确定的。
16)有哪些方法可以让 TestNG 允许你指定依赖项?
TestNG 允许您以两种方式指定依赖项
- 在 @Test 注释中使用属性dependsOnMethods
- 在 @Test 注释中使用属性dependsOnGroups
17) 在 TestNG 中,使用数据提供者传递参数意味着什么?
当你需要传递复杂的参数或需要从 Java 创建的参数时,可以使用数据提供者传递参数。数据提供者的注解是 @DataProvider。如果未声明名称,则此注解只有一个字符串属性;数据提供者的名称将自动默认为方法的名称。数据提供者返回一个 排列 对象。
18) 说出在 TestNG 中执行测试的各种方法?
TestNG 中的测试使用 TestNG 类执行。在 TestNG 测试框架中运行测试时,该类是主要入口点。用户可以创建自己的 TestNG 对象,并以多种方式调用它,例如
- 在已经存在的 testing.xml 上
- 在完全由 Java 创建的合成 testing.xml 上
- 通过直接设置测试类
19)提供示例TestNG代码
package firsttestngpackage; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.*; public class firsttestngfile { public String baseUrl = "http://demo.guru99.com/test/newtours/"; String driverPath = "C:\\geckodriver.exe"; public WebDriver driver ; @Test public void verifyHomepageTitle() { System.out.println("launching firefox browser"); System.setProperty("webdriver.firefox.marionette", driverPath); driver = new FirefoxDriver(); driver.get(baseUrl); String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = driver.getTitle(); Assert.assertEquals(actualTitle, expectedTitle); driver.close(); } }
这些面试问题也会对你的口试有帮助
为面试做准备的好方法
在问题 6 中,您编写的是 testing.xml 而不是 testng.xml
谢谢…已更正
第三个问题的第一行应该是“TestNG 相对于 JUnit 的优势包括”。
感谢您的提问。
错误已修复!
11)什么是参数测试? 应该是参数化测试是什么?
嗨,谢谢你的来信。已审核并更新。