gpt4 book ai didi

android - cucumber-android 无法在项目中找到步骤定义 (MissingStepDefinitionError)

转载 作者:行者123 更新时间:2023-11-29 01:43:48 25 4
gpt4 key购买 nike

我正在尝试在我的 Android 项目中使用 Cucumber-JVM。
我可以很好地运行示例(android-testcukeulator-test)。

当我将 cucumber-android 引入我自己的 Maven 项目时,我得到以下 MissingStepDefinitionError。就好像 cucumber-android 不知道在哪里可以找到它的步骤。最初我认为是 org.picocontainer.paranamer.NullParanamer 导致了这个问题,但是示例项目也有这个错误并且它们运行得很好。所以这可能是一条红鲱鱼。

如有任何帮助或建议,我们将不胜感激。


Maven 输出:

[INFO] Device 015d46d41a300612_asus_Nexus7 found.
[INFO] 015d46d41a300612_asus_Nexus7 : Running instrumentation tests in com.myapp.tests
[INFO] 015d46d41a300612_asus_Nexus7 : Run started: com.myapp.tests, 1 tests:
[INFO] 015d46d41a300612_asus_Nexus7 : Start [1/1]: Feature Test#Scenario Testing
[INFO] 015d46d41a300612_asus_Nexus7 : ERROR:Feature Test#Scenario Testing
[INFO] 015d46d41a300612_asus_Nexus7 : cucumber.runtime.android.MissingStepDefinitionError:

@When("^I test$")
public void i_test() throws Throwable {
// Write code here that turns the phrase above into concrete actions
throw new PendingException();
}

at cucumber.runtime.android.AndroidInstrumentationReporter.endOfScenarioLifeCycle(AndroidInstrumentationReporter.java:146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at cucumber.runtime.Utils$1.call(Utils.java:34)
at cucumber.runtime.Timeout.timeout(Timeout.java:13)
at cucumber.runtime.Utils.invoke(Utils.java:30)
at cucumber.runtime.RuntimeOptions$1.invoke(RuntimeOptions.java:179)
at $Proxy2.endOfScenarioLifeCycle(Native Method)
at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:52)
at cucumber.runtime.model.CucumberFeature.run(CucumberFeature.java:116)
at cucumber.api.android.CucumberInstrumentationCore.onStart(CucumberInstrumentationCore.java:131)
at cucumber.api.android.CucumberInstrumentation.onStart(CucumberInstrumentation.java:21)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)

[INFO] 015d46d41a300612_asus_Nexus7 : End [1/1]: Feature Test#Scenario Testing
[INFO] 015d46d41a300612_asus_Nexus7 : Run ended: 0 ms
[ERROR] 015d46d41a300612_asus_Nexus7 : FAILURES!!!
[INFO] Tests run: 1, Failures: 0, Errors: 1


Maven 依赖项:

<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-android</artifactId>
<version>1.1.6</version>
<type>apklib</type>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>1.1.6</version>
</dependency>


日志输出:

03-31 14:14:19.511  17089-17089/? D/cucumber-android﹕ Found CucumberOptions in class com.myapp.tests.MyActivitySteps
03-31 14:14:19.511 17089-17089/? D/cucumber-android﹕ @cucumber.api.CucumberOptions(dotcucumber=, dryRun=false, features=[features], format=[], glue=[], monochrome=false, name=[], snippets=UNDERSCORE, strict=false, tags=[])
...
03-31 14:14:20.401 17089-17104/? D/cucumber-android﹕ Feature: Test (features/helloworld.feature)
03-31 14:14:20.411 17089-17104/? E/dalvikvm﹕ Could not find class 'org.picocontainer.paranamer.NullParanamer', referenced from method org.picocontainer.paranamer.AnnotationParanamer.<init>
03-31 14:14:20.421 17089-17104/? W/dalvikvm﹕ VFY: unable to resolve new-instance 2070 (Lorg/picocontainer/paranamer/NullParanamer;) in Lorg/picocontainer/paranamer/AnnotationParanamer;
03-31 14:14:20.421 17089-17104/? D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0000
03-31 14:14:20.421 17089-17104/? D/dalvikvm﹕ DexOpt: unable to opt direct call 0x29a6 at 0x02 in Lorg/picocontainer/paranamer/AnnotationParanamer;.<init>
03-31 14:14:20.441 17089-17104/com.sbg.mobile.tablet D/cucumber-android﹕ Scenario: Testing
03-31 14:14:20.441 17089-17104/com.sbg.mobile.tablet D/cucumber-android﹕ Given I have a test
03-31 14:14:20.441 17089-17104/com.sbg.mobile.tablet D/cucumber-android﹕ When I test
03-31 14:14:20.461 17089-17104/com.sbg.mobile.tablet W/cucumber-android﹕ @Given("^I have a test$")
public void i_have_a_test() throws Throwable {
// Write code here that turns the phrase above into concrete actions
throw new PendingException();
}
03-31 14:14:20.461 17089-17104/com.sbg.mobile.tablet W/cucumber-android﹕ @When("^I test$")
public void i_test() throws Throwable {
// Write code here that turns the phrase above into concrete actions
throw new PendingException();
}

最佳答案

我能够通过反复试验找出问题所在。

首先尝试将我的步骤定义从 src/main 移动到 src/test 但这没有帮助。

最终起作用的是确保步骤定义不在用@CucumberOptions注释的同一个类中。这没有意义,因为这就是示例的设置方式并且它们可以正常工作。但是在我的项目中,如果步骤定义在带有选项注释的类中,则不会被拾取。同一个包中的另一个 Java 类就可以了。

有点奇怪。

关于android - cucumber-android 无法在项目中找到步骤定义 (MissingStepDefinitionError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22761984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com