maven 如何获取在java8和旧依赖项中运行的当前功能文件名?

amrnrhlw  于 2023-10-17  发布在  Maven
关注(0)|答案(1)|浏览(108)

如何使用DriverFactory类或runner文件获取在Java中运行的当前功能文件名,用于旧版本的依赖项和Java 8?
我尝试使用功能场景,但它不适合我。有没有什么方法可以在运行时动态地获取功能文件的当前名称或标签?

mm9b1k5b

mm9b1k5b1#

要在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);
            }
        }
    }

几个注意事项:

  • getId()返回一个字符串,其中包含特性文件的路径和名称。将此字符串拆分为“;“给出一个数组,其中第一个元素是特性名称的“slugified”版本。然后,我们操作slugified的特性名称,将其转换回可读性更强的特性名称。
  • getSourceTagNames()返回场景的一组标记。这种方法适用于许多旧版本的Cucumber,特别是如果您使用Java 8。但请记住,可用的确切方法及其行为可能会因您使用的Cucumber库的特定版本而异。

相关问题