【发布时间】:2019-12-24 09:43:43
【问题描述】:
我可以在调试 StepDefinitions.java 时启动 Spring,但是从 gradle 运行测试会产生 null。我需要额外的胶水吗?
产生空值:gradle cucumber
产生空值:运行 myFeature.features
产生 myService(工作):运行 Stepdefinitions.java
我已经尝试了以下代码:
@ContextConfiguration(
classes = Application.class,
loader = SpringBootContextLoader.class)
@WebAppConfiguration
当前步骤定义:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
@WebAppConfiguration
public class StepDefinitions{
private static String roll;
@Autowired
MyService myService;
/** Reset all static values before running test cases */
@BeforeClass
public static void resetValues() {
roll = "";
}
//I use swedish, "Given"
@Givet("Jag har rollen {string}")
public void getRole(String roll) {
assertNotNull(roll);
this.roll = roll;
myService.useRole(roll);
}
}
gradle.build:
dependencies {
compile files('../libs/cucumber-spring-4.7.1.jar')
testCompile 'io.cucumber:cucumber-java:' + cucumberVersion
testCompile 'io.cucumber:cucumber-junit:' + cucumberVersion
...
}
task cucumber() {
dependsOn assemble, compileTestJava
doLast {
javaexec {
main = "cucumber.api.cli.Main"
classpath = configurations.cucumberRuntime +
sourceSets.main.output + sourceSets.test.output
args = ['--plugin', 'pretty', '--glue', 'steps/rufs',
'src/test/resources/features', '--tags','@rufs']
}
}
}
【问题讨论】:
-
你没有让 JUnit 参与任何地方。
RunWith被 JUnit 使用,这就是促使 Spring 参与进来的原因。当 Cucumber 作为您的套件运行时,它会忽略这些注释。
标签: java spring-boot gradle cucumber