如何使用 DriverFactory 类或旧依赖项版本和 java 8 的运行程序文件获取在 java 中运行的当前功能文件名?
我尝试使用功能场景,但它对我不起作用。有什么方法可以在运行时动态获取功能文件的当前名称或标签?
要获取 Cucumber-Java 测试中当前正在执行的功能文件的名称,一种常见的方法是使用
Before
钩子并从提供给钩子方法的 Scenario
对象中提取详细信息。
下面的示例演示了如何获取特征文件名和标签:
import cucumber.api.Scenario;
import cucumber.api.java.Before;
public class Hooks {
@Before
public void beforeScenario(Scenario scenario) {
String featureName = "Feature ";
String rawFeatureName = scenario.getId().split(";")[0].replace("-"," ");
featureName = featureName + rawFeatureName.substring(0, 1).toUpperCase() + rawFeatureName.substring(1);
// print the feature name
System.out.println("Feature Name: " + featureName);
// print scenario's tags
for (String tag : scenario.getSourceTagNames()) {
System.out.println("Tag: " + tag);
}
}
}
一些注意事项:
scenario.getId() 返回一个包含要素文件的路径和名称的字符串。用“;”分割该字符串给出一个数组,其中第一个元素是特征名称的“slugified”版本. 然后,我们对经过 slugified 的功能名称进行操作,将其转换回更易读的功能名称。
scenario.getSourceTagNames() 返回场景的一组标签。 这种方法适用于许多旧版本的 Cucumber,特别是如果您使用的是 Java 8。但请记住,可用的确切方法及其行为可能会有所不同,具体取决于您使用的 Cucumber 库的特定版本。