我正在使用cucumber (v7.2.3)测试一个Springboot应用程序。我有一个功能文件使用@SpringBootTest和@Suite(来自junit-platform)来测试应用程序,我使用@ConfigurationParameter来引用我有步骤定义类的包。
我还有@DataTableType注释来将功能数据转换为java对象,它们与我的步骤定义在同一个包中。
现在我想有另一组步骤定义(在一个单独的文件中),它将连接到在开发环境中运行的应用程序(通过REST)。我想重新使用我的功能文件来测试完全相同的功能,但在运行的应用程序上。
我试图在不同的包中创建一个新的步骤定义java类,并将现有的步骤定义java类放在另一个包中,但功能数据到java对象创建失败。可能cucumber希望在同一个包中有@DataTableType注释的类作为步骤定义类。
是否知道如何使用相同的特征文件实现2个不同的步骤定义。
注意:我想运行本地步骤定义作为maven构建的一部分,远程步骤定义作为部署后任务运行。还请指导我如何实现这一点(可能使用标签)。
版本使用Junit-platform - 1.8.2木星- 5.8.2Springboot - 2.7.4
假设您将代码组织成三个包com.example.local
,com.example.remote
,com.example.shared
。然后将本地测试的步骤定义放在.local
中,远程测试的步骤定义放在.remote
中,数据表类型和其他共享代码放在.shared
包中。
然后您可以为胶水创建具有不同配置的多个套件。
@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("com/example")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "com.example.local, com.example.shared")
public class RunLocalCucumberTest {
}
@Suite
@IncludeEngines("cucumber")
@SelectClasspathResource("com/example")
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "com.example.remote, com.example.shared")
public class RunRemoteCucumberTest {
}