2 回答
TA贡献1828条经验 获得超13个赞
假设您正在使用 maven 来运行测试。
如果您打算使用 junit runner of Cucumber,您可以继续使用现有逻辑来设置BeforeClassrunner 中的数据。如果你有一个跑步者会更容易,否则你需要在插件中设置执行顺序。关于跳过 Given 方法,您可以向 中添加一个属性surefire or failsafe plugin并在 Given 方法中使用它。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<systemProperties>
<property>
<name>skipproperty</name>
<value>myvaluetest</value>
</property>
</systemProperties>
</configuration>
</plugin>
在 Given 方法中,您可以使用此属性作为跳过该步骤的标志。虽然它是一个黑客,因为它被复制到所有设置方法。但是这样你仍然可以将逻辑保留在给定的方法中。而且,如果您删除 POM 中的属性,Cucumber 将按照正常方式进行设置。
if(System.getProperty("skipproperty")!=null)
return;
但是,如果您还想尝试使用 TestNg,则可以使用 mavenexec plugin来运行设置代码。这将使其独立于测试框架。设置与上面相同,只是在 POM 中添加了 exec 插件。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>my-execution</id>
<phase>process-test-classes</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>runner.ExecuteSetup</mainClass>
<classpathScope>test</classpathScope>
</configuration>
</plugin>
ExecuteSetup main()方法将包含调用设置代码的现有逻辑。确保你添加classpathscope否则你会得到一个奇怪的classnotfoundexception.
添加回答
举报