[Cucumber][JVM][Maven] 测试不会通过 maven 从命令行运行 [英] [Cucumber][JVM][Maven]Tests dosen't run from command line through maven

查看:30
本文介绍了[Cucumber][JVM][Maven] 测试不会通过 maven 从命令行运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I am running tests using java, cucumber with Maven. I am using Eclipse IDE. Also the pom.xml has cucumber dependencies. I am running tests in two ways.

  1. From Eclipse IDE: I run tests as Junit tests and the test results are successful.

2: From command promt: My test failed and below is the result.

  • Here is the Pom.xml:

    http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

    <groupId>CCIRA_Test_Auto</groupId>
    <artifactId>CCIRA_Test_Auto</artifactId>
    <version>0.0.1</version>
    <packaging>jar</packaging>
    <name>CCIRA_Test_Auto</name>
    
    <properties>
        <cucumber.version>1.2.0</cucumber.version>
        <picocontainer.version>2.15</picocontainer.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.3.5</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>${cucumber.version}</version>
        </dependency>
    
        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>phantomjsdriver</artifactId>
            <version>1.2.1</version>
        </dependency>
    
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.44.0</version>
        </dependency>
    
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.11-beta3</version>
        </dependency>
        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
            <version>2.0.2</version>
        </dependency>
    
        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.8.0</version>
        </dependency>
    </dependencies>
    
    <build>
        <pluginManagement>
            <plugins>
    
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    

  • My Runner Test:

    package ccira.helpers;

        import org.junit.runner.RunWith;
    
    
    
    import org.testng.annotations.Test;
    
    import cucumber.api.CucumberOptions;
    import cucumber.api.junit.Cucumber;
    
    
    
    @RunWith(Cucumber.class)
    
    @CucumberOptions(
    
    features = "C:/Users/rah/Documents/workspace/CCIRA_auto/src/ressouces/features",
    
    tags = {"@Personne"},
    
    glue={"ccira.stepDefinitions"},
    
    plugin ={
    "pretty",
    "html:results/cucumber",
    "json:results/cucumber.json",
    "junit:results/cucumber.xml",
    }
            )
    
    
    public class RunnerTest {
    }
    

  • My output console :

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

SLF4J: Defaulting to no-operation (NOP) logger implementation

SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further   details.

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building CCIRA_Test_Auto 0.0.1
[INFO] ------------------------------------------------------------------------
[WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to xml-apis:xml-apis:jar:1.0.b2
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ CCIRA_Test_Auto ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:Users
ahDocumentsworkspaceCCIRA_Test_Autosrcmain
esources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ CCIRA_Test_Auto ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ CCIRA_Test_Auto ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:Users
ahDocumentsworkspaceCCIRA_Test_Autosrc	est
esources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ CCIRA_Test_Auto ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ CCIRA_Test_Auto ---
[INFO] Surefire report directory: C:Users
ahDocumentsworkspaceCCIRA_Test_Auto	argetsurefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------


Results :


Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 10.051s
    [INFO] Finished at: Mon Dec 05 09:30:10 GMT 2016
    [INFO] Final Memory: 7M/62M
    [INFO] ------------------------------------------------------------------------

解决方案

The dependency

org.slf4j.impl.StaticLoggerBinder

is not defined in your pom.xml file. However it is defined on your build path in your Eclipse project. Placing one (and only one) of slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem.

I would add a dependency in your pom.xml, perhaps something like this:

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.21</version>
</dependency>

EDIT

A less good but viable alternative is to utilize the Surefire plugin's additionalClasspathElements element "to add custom resources/JARs to your classpath. This will be treated as an absolute file system path, so you may want use ${basedir} or another property combined with a relative path. Note that additional classpath elements are added to the end of the classpath, so you cannot use these to override project dependencies or resources."

I said less good because it is better to track as dependencies in your pom.xml where if you update one dependency to a later version you can see the other dependencies that also have to be updated. You might overlook jars specified down in the surefire plugin.

这篇关于[Cucumber][JVM][Maven] 测试不会通过 maven 从命令行运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆