我已经创建了一个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>
答案 0 :(得分:3)
如果你正在使用maven,请运行这样的测试套件:
mvn clean test -DsuiteXmlFile=src/test/resources/api/TestngSuite.xml
将此命令添加到批处理文件并执行它。
答案 1 :(得分:2)
如果您使用的是maven项目和java 8,那么在从批处理文件运行testng xml文件之前需要执行几个步骤:
在你的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>
在你的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>
保存您的pom.xml文件并右键单击您的maven项目并选择maven-&gt;更新项目并选中&#34;强制更新快照/版本&#34;的复选框。然后单击“确定”
现在创建一个带有扩展名bat的批处理文件,并将此示例代码放入其中,并根据您的项目进行更改。
设置projectLocation = C:\ locationOfYourProject \ locationOfYourTestNGXmlFile
cd%projectLocation%
mvn clean test -DsuiteXmlFile = yourXMLFileCanBeAnyName.xml
答案 2 :(得分:0)
即使在执行过程中将jcommander和testng jar包含在类路径中,我们也需要访问可以访问应用程序主程序包的文件夹
执行
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
然后用户必须转到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