maven - Cucumber - java.lang.NoClassDefFoundError -
i'm learning cucmber , i'm facing following errors while running test:
java.lang.noclassdeffounderror: cucumber/io/resourceloader @ java.lang.class.getdeclaredconstructors0(native method) @ java.lang.class.privategetdeclaredconstructors(class.java:2671) @ java.lang.class.getconstructor0(class.java:3075) @ java.lang.class.getconstructor(class.java:1825) @ org.junit.internal.builders.annotatedbuilder.buildrunner(annotatedbuilder.java:104) @ org.junit.internal.builders.annotatedbuilder.runnerforclass(annotatedbuilder.java:86) @ org.junit.runners.model.runnerbuilder.saferunnerforclass(runnerbuilder.java:59) @ org.junit.internal.builders.alldefaultpossibilitiesbuilder.runnerforclass(alldefaultpossibilitiesbuilder.java:26) @ org.junit.runners.model.runnerbuilder.saferunnerforclass(runnerbuilder.java:59) @ org.junit.internal.requests.classrequest.getrunner(classrequest.java:33) @ com.intellij.junit4.junit4ideatestrunner.startrunnerwithargs(junit4ideatestrunner.java:49) @ com.intellij.rt.execution.junit.ideatestrunner$repeater.startrunnerwithargs(ideatestrunner.java:51) @ com.intellij.rt.execution.junit.junitstarter.preparestreamsandstart(junitstarter.java:237) @ com.intellij.rt.execution.junit.junitstarter.main(junitstarter.java:70) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:498) @ com.intellij.rt.execution.application.appmain.main(appmain.java:147) caused by: java.lang.classnotfoundexception: cucumber.io.resourceloader @ java.net.urlclassloader.findclass(urlclassloader.java:381) @ java.lang.classloader.loadclass(classloader.java:424) @ sun.misc.launcher$appclassloader.loadclass(launcher.java:331) @ java.lang.classloader.loadclass(classloader.java:357) ... 19 more files:
- src/test/java/annotation/runtest.java
- src/test/java/annotation/annotation.java
- src/test/java/annotation/annotation.feature
- pom.xml
src/test/java/annotation/runtest.java
package annotation; import org.junit.runner.runwith; import cucumber.junit.cucumber; @runwith(cucumber.class) @cucumber.options( format = {"pretty", "html:target/cucumber"}, features = {"src/test/java/annotation/annotation.feature"} ) public class runtest { } src/test/java/annotation/annotation.java
package annotation; import org.openqa.selenium.by; import org.openqa.selenium.webdriver; import org.openqa.selenium.chrome.chromedriver; import cucumber.annotation.en.given; import cucumber.annotation.en.then; import cucumber.annotation.en.when; public class annotation { webdriver driver = null; @given("^i on facebook login page$") public void gotofacebook() { driver = new chromedriver(); driver.navigate().to("https://www.facebook.com/"); } @when("^i enter username \"(.*)\"$") public void enterusername(string arg1) { driver.findelement(by.id("email")).sendkeys(arg1); } @when ("^i enter password \"(.*)\"$") public void enterpassword(string arg1) { driver.findelement(by.id("pass")).sendkeys(arg1); driver.findelement(by.id("u_0_v")).click(); } @then("^login should fail$") public void checkfail() { if(driver.getcurrenturl().equalsignorecase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ system.out.println("test1 pass"); } else { system.out.println("test1 failed"); } driver.close(); } @then("^relogin option should available$") public void checkrelogin() { if(driver.getcurrenturl().equalsignorecase( "https://www.facebook.com/login.php?login_attempt=1&lwv=110")){ system.out.println("test2 pass"); } else { system.out.println("test2 failed"); } driver.close(); } } src/test/java/annotation/annotation.feature
feature: annotation #this how background can used eliminate duplicate steps background: user navigates facebook given on facebook login page #scenario , scenario: when enter username "tom" , enter password "jerry" login should fail #scenario scenario: when enter username "tom" , enter password "jerry" login should fail relogin option should available pom.xml
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>nice.git.sample</groupid> <artifactid>hello-world</artifactid> <version>1.0-snapshot</version> <dependencies> <dependency> <groupid>org.seleniumhq.selenium</groupid> <artifactid>selenium-java</artifactid> <version>3.0.1</version> </dependency> <dependency> <groupid>info.cukes</groupid> <artifactid>cucumber-java</artifactid> <version>1.2.5</version> <scope>test</scope> </dependency> <dependency> <groupid>info.cukes</groupid> <artifactid>cucumber-core</artifactid> <version>1.2.5</version> <scope>test</scope> </dependency> <dependency> <groupid>info.cukes</groupid> <artifactid>cucumber-junit</artifactid> <version>1.2.5</version> <scope>test</scope> </dependency> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>latest</version> <scope>test</scope> </dependency> <dependency> <groupid>org.seleniumhq.selenium</groupid> <artifactid>selenium-api</artifactid> <version>2.47.1</version> <scope>test</scope> </dependency> <dependency> <groupid>info.cukes</groupid> <artifactid>cucumber-junit</artifactid> <version>1.0.2</version> <scope>test</scope> </dependency> <dependency> <groupid>info.cukes</groupid> <artifactid>cucumber-java</artifactid> <version>1.0.2</version> <scope>test</scope> </dependency> <dependency> <groupid>info.cukes</groupid> <artifactid>cucumber-core</artifactid> <version>1.1.8</version> </dependency> </dependencies> </project>
duplicated artifact in pom.xml. remove old version , update project
cucumber-core
Comments
Post a Comment