2017-07-15 2 views
0

cucumberseleniumを実行するmavenプロジェクトがあります。 *.featureファイルはsrc/featuresで定義され、ステップはsrc/test/java/com/example/stepsで定義されています。キュウリ:クラスが見つかりませんcom.example.runner.RunnerTest

package com.example.runner; 

import org.junit.runner.RunWith; 
import cucumber.api.CucumberOptions; 
import cucumber.api.junit.Cucumber; 

@RunWith(Cucumber.class) 
@CucumberOptions(
      features={"src/features"}, 
      glue="com/example/steps") 
public class RunnerTest { 

} 

を問題は次のとおりです:私はそれがで文句クラスを実行すると:

Class not found com.example.runner.RunnerTest 
java.lang.ClassNotFoundException: com.example.runner.RunnerTest 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:688) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:421) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

私も以下のようにテストランナークラスを定義した

enter image description here

質問は、なぜランナーのカルルスを認識していないのですか?


更新:

私は

開いている機能ファイルによって機能ファイルを実行すると - >右クリック - > 1キュウリ機能

- >として実行それはうまく動作します

私はglue="com.example.steps"glue="com/example/steps"を変更し、それがで文句を言う:

java.lang.NullPointerException 
    at com.example.steps.Click_Steps.i_am_in(Click_Steps.java:23) 
    at ✽.Given I am in "http://suvian.in/selenium/1.6checkbox.html"(CheckBox.feature:14) 

と私は、ファイルを参照してください。

base.getDriver().navigate().to(uri); 

しかし、私はフィーチャーファイルを実行すると、このラインはかなりうまく機能し、言ったように私は次のように再編成するあなたの構造検討するRun as -> Cucumber

答えて

0

を使用して:

src/ 
├── main/ 
│ └── java/ 
|  └── ... 
│ 
└── test/ 
    ├── java/ 
    | └── com.example/ 
    |   ├── checkbox/ 
    |   | ├── CheckboxSteps/ 
    |   | └── CheckboxTest/ 
    |   ├── click_button/ 
    |   | ├── ClickButtonSteps/ 
    |   | └── ClickButtonTest/ 
    |   └── ... 
    | 
    └── resources/ 
     └── features/ 
       ├── checkbox/ 
       | └── checkbox.feature/ 
       ├── click_button/ 
       | └── ClickButton.feature/ 
       └── ... 

これにより、テストに失敗した場合のコード構成とトレーサビリティが向上します。

CheckboxTestは、次のようになります。

package com.example.checkbox; 

    import cucumber.api.CucumberOptions; 
    import cucumber.api.SnippetType; 
    import cucumber.api.junit.Cucumber; 
    import org.junit.runner.RunWith; 

    @RunWith(Cucumber.class) 
    @CucumberOptions(
       snippets = SnippetType.CAMELCASE, 
       glue = {"com.example.checkbox"}, 
       features = "classpath:features/checkbox") 
    public class CheckboxTest { 

    /* 
    * This class should be empty, step definitions should be in separate classes. 
    */ 

    } 

その後CheckboxStepsであなたのステップの定義を置きます。

今すぐCheckboxTestを実行できるはずです。

関連する問題