类似于this older post,我有一个使用Spring Boot和Cucumber的Java应用程序。
此应用程序的目的是使用Selenium验证团队使用的某些工具,因此我的测试全部在主要范围内。
测试在IDE中可以正常运行,但是当我打包jar并尝试运行它时,我得到未找到后端。请确保您的CLASSPATH上有一个后端模块。
经过一些搜索后,我配置了spring-boot-maven-plugin来解压缩Cucumber-java依赖项。 修复了“无后端”错误,但是现在,当我运行jar时,我将我的功能文件打印在控制台上,但没有真正执行任何测试(执行速度太快,我什至引入了一个错误,但无论如何都成功完成了
我的pom:
<properties>
<cucumber.version>4.7.1</cucumber.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-spring</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.4.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<requiresUnpack>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
</dependency>
</requiresUnpack>
</configuration>
</plugin>
</plugins>
</build>
我的主班:
@SpringBootApplication
public class ExecutableMain implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(ExecutableMain.class, args);
}
@Override
public void run(String... args) {
for (String arg : args) {
...
}
Result result = JUnitCore.runClasses(Test1.class, Test2.class, Test3.class);
if (result.wasSuccessful()) {
System.out.println("Success!");
} else {
System.out.println("Failure!");
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
}
}
}
其中一项测试?
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {"pretty", "html:target/cucumber-test1", "json:target/cucumber-test1/cucumber.json"},
glue = {"cucumber.test1", "cucumber.steps"},
features = "src/main/resources/cucumber/test1/"
)
public class Test1 {
}
控制台结果:
INFO 15724 --- [ main] cucumber.ExecutableMain : Starting ExecutableMain
INFO 15724 --- [ main] cucumber.ExecutableMain : No active profile set, falling back to default profiles: default
INFO 15724 --- [ main] cucumber.ExecutableMain : Started ExecutableMain in 4.546 seconds (JVM running for 8.234)
INFO 15724 --- [ main] c.runtime.java.ObjectFactoryLoader : Loading ObjectFactory via service loader: io.cucumber.spring.SpringFactory
Feature: my test feature
Validates stuff
Scenario: my test scenario
Given foo
Then Bar
...
Success!