如何从批处理为maven项目

时间:2016-06-17 09:45:41

标签: xml maven batch-file selenium testng

我已经创建了一个maven项目,并且我在不同的套件中有几个testng.xml文件。

如果我从IDE(Intelij)中运行我的.xml文件,一切都很顺利

但我想要做的是为我创建一个运行这些.xml的批处理文件,这样我就可以在没有IDE的情况下运行它。

当你有一个像这样的lib文件夹时,我已经看到了一个解决方案: https://www.seleniumeasy.com/testng-tutorials/how-to-run-testng-xml-via-batch-file-example

但它不适合我,因为我有一个maven项目,所以没有lib或bin文件夹。

我也试过这个

SET SUITE_LOCATION=C:\Users\%USERNAME%\IdeaProjects\Test_Automation\src\main\java\MyApp\Scenarios\CustomStuff
SET CLASSPATH=C:\Users\%USERNAME%\.m2\repository\org\testng\testng\6.9.10\testng-6.9.10.jar;
java org.testng.TestNG %SUITE_LOCATION%\testng.xml

java -cp org.testng.TestNG %SUITE_LOCATION%\testng.xml

但它不起作用。我还试图在类路径中添加.class文件但是也没有用。

关于如何运行它的任何想法?

谢谢!

更新

我接近了一些事情,我认为这是我尝试的最后一个命令:

java -classpath C:\Users\%USERNAME%\.m2\repository\org\testng\testng\6.9.10\testng-6.9.10.jar;C:\Users\%USERNAME%\.m2\repository\com\beust\jcommander\1.48\jcommander-1.48.jar;%CLASSPATH% org.testng.TestNG -d test-outputs mytestsuite.xml

错误是:

  

[TestNG] [ERROR]在类路径中找不到类:   “myApp.Scenarios.Scenario1”

这是我的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="AndroidSuite" parallel="tests" thread-count="1">
<test name="SamsungS6-Scenario1">
    <parameter name="deviceUDID"  value="04157df40862d02f"/>
    <classes>
        <class name="myApp.Scenarios.Scenario1"/>
    </classes>
</test>

4 个答案:

答案 0 :(得分:3)

如果你正在使用maven,请运行这样的测试套件:

mvn clean test -DsuiteXmlFile=src/test/resources/api/TestngSuite.xml

将此命令添加到批处理文件并执行它。

答案 1 :(得分:2)

如果您使用的是maven项目和java 8,那么在从批处理文件运行testng xml文件之前需要执行几个步骤:

  1. 在你的pom xml文件中,你需要添加一个强制maven为编译器使用1.8的代码,因为默认的是1.5

    <properties>
    
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    
    </properties>
    
  2. 在你的pom xml文件中,你需要添加maven-surefire-plugin的代码:

    <plugins>
    
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
                </suiteXmlFiles>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
    
    </plugins>
    

  3. 保存您的pom.xml文件并右键单击您的maven项目并选择maven-&gt;更新项目并选中&#34;强制更新快照/版本&#34;的复选框。然后单击“确定”

  4. 现在创建一个带有扩展名bat的批处理文件,并将此示例代码放入其中,并根据您的项目进行更改。

    设置projectLocation = C:\ locationOfYourProject \ locationOfYourTestNGXmlFile

    cd%projectLocation%

    mvn clean test -DsuiteXmlFile = yourXMLFileCanBeAnyName.xml

答案 2 :(得分:0)

即使在执行过程中将jcommander和testng jar包含在类路径中,我们也需要访问可以访问应用程序主程序包的文件夹

  1. 例如,如果com.test.app包中存在* Test.java文件,那么与项目相关的文件夹结构将是 的src /测试/ JAVA / COM /测试/应用
  2. 执行

    javac -cp&#34;。:/ home / manish / .m2 / repository / org / testng / testng / 6.9.8 / testng-6.9.8.jar:/home/manish/.m2/repository/ COM /博伊斯特/ jcommander / 1.48 / jcommander-1.48.jar&#34; $(find -name * .java)

    将在各自的包中编译java文件

    用户必须转到test / java文件夹(如果用户在项目根文件夹中)

    cd src/test/java
    javac -cp ".:/home/manish/.m2/repository/org/testng/testng/6.9.8/testng-6.9.8.jar:/home/manish/.m2/repository/com/beust/jcommander/1.48/jcommander-1.48.jar" org.testng.TestNg testng.xml_file_path_relative_to_current_location
    
    1. 如果使用mvn编译器编译java文件:testCompile
    2. 然后用户必须转到target / test-classes文件夹

      cd target/test-classes 
      javac -cp ".:/home/manish/.m2/repository/org/testng/testng/6.9.8/testng-6.9.8.jar:/home/manish/.m2/repository/com/beust/jcommander/1.48/jcommander-1.48.jar" org.testng.TestNg testng.xml_file_path_relative_to_current_location
      

      以上两种方式都在执行测试

答案 3 :(得分:0)

java -classpath C:\ Users \%USERNAME%。m2 \ repository \ org \ testng \ testng \ 6.9.10 \ testng-6.9.10.jar; C:\ Users \%USERNAME%。m2 \ repository \ com \ beust \ jcommander \ 1.48 \ jcommander-1.48.jar;%CLASSPATH%org.testng.TestNG -d test-outputs mytestsuite.xml

在这种情况下,您的jar文件丢失,因此找不到类。

java -classpath C:\ Users \%USERNAME%。m2 \ repository \ org \ testng \ testng \ 6.9.10 \ testng-6.9.10.jar; C:\ Users \%USERNAME%。m2 \ repository \ COM \博伊斯特\ jcommander \ 1.48 \ jcommander-1.48.jar;%CLASSPATH%; org.testng.TestNG -d test-outputs mytestsuite.xml