@BeforeAll 和 @BeforeSuite 之间的区别

问题描述 投票:0回答:1

@BeforeAll
(io.cucumber.java.BeforeAll) &

有什么区别
@BeforeSuite 

(org.testng.annotations.BeforeSuite) 注释?

当使用 @BeforeSuite 时,方法内的一个步骤会抛出 null,而当使用 @BeforeAll 时,它不会失败。

java automation appium-android appium-java
1个回答
0
投票

io.cucumber.java.BeforeAll 中的 @BeforeAll 和 org.testng.annotations.BeforeSuite 中的 @BeforeSuite 的区别在于其功能和所属的测试框架。让我们来分解一下差异:

目的:

@BeforeAll 来自 io.cucumber.java.BeforeAll:该注解用于 BDD 测试框架 Cucumber 中。它标记一个在功能文件中的所有场景之前运行一次的方法。 @BeforeSuite 来自 org.testng.annotations.BeforeSuite:此注释是 TestNG 的一部分,TestNG 是一个为测试 Java 应用程序而设计的测试框架。它标记了一个在套件中的所有测试之前执行一次的方法。 适用范围:

@BeforeAll:适用于Cucumber场景,通常写在feature文件中,并使用步骤定义来实现。 Cucumber 中用 @BeforeAll 注解的方法在功能文件中的任何场景之前运行。 @BeforeSuite:它适用于TestNG测试套件,其中可以包含多个测试类。用 @BeforeSuite 注释的方法在套件中的任何测试之前运行一次,包括该套件中的所有测试类。 执行上下文:

需要注意的是,Cucumber 场景和 TestNG 套件在不同的执行上下文中运行。在 Cucumber 中,场景通常在单次执行中按顺序运行,而 TestNG 套件可以同时或按顺序执行多个测试类,具体取决于配置。

关于您提到的使用 @BeforeSuite 导致 空指针异常 而使用 @BeforeAll 则不会的问题,造成这种行为的原因可能有多种:

© www.soinside.com 2019 - 2024. All rights reserved.