我使用Maven运行Selenium Testng测试,但是我试图创建可执行jar,因此其他团队成员只需简单的设置即可从其桌面运行自动化套件。
因此,我添加了一个主要的“运行器”方法来创建可执行jar。
public class LaunchTests {
public static void main(String[] args) {
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
List<String> suites = new ArrayList();
suites.add("testng.xml");//path to xml..
testng.setTestSuites(suites);
testng.run();
}
Run Code Online (Sandbox Code Playgroud)
}
我最好的猜测是需要向POM.xml中添加一些内容吗?
从eclipse手动运行testng测试或使用mvn clean测试(Surefire插件)运行它们时,它们可以完美运行。但是当尝试以Java程序运行时出现此错误。
Exception in thread "main" org.testng.TestNGException:
Cannot find class in classpath: package.TestOne
at org.testng.xml.XmlClass.loadClass(XmlClass.java:81)
at org.testng.xml.XmlClass.init(XmlClass.java:73)
at org.testng.xml.XmlClass.<init>(XmlClass.java:59)
at org.testng.xml.TestNGContentHandler.startElement(TestNGContentHandler.java:548)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.testng.xml.XMLParser.parse(XMLParser.java:38)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:16)
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:9)
at org.testng.xml.Parser.parse(Parser.java:172)
at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:302)
at org.testng.TestNG.run(TestNG.java:991)
at util.LaunchTests.main(LaunchTests.java:17)
Run Code Online (Sandbox Code Playgroud)
Testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite1" parallel="methods" thread-count="1">
<test name="Chrome Adviser Portal" allow-return-values="true"
thread-count="1">
<parameters>
<parameter name="browser" value="chrome" />
<parameter name="loginType" value="adviser" />
</parameters>
<classes>
<class name="adviserPortal.AdviserLogin" />
</classes>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
您提到可以通过maven surefire插件从eclipse中运行测试,并且仅在执行main方法时不能运行它。
仅当您的类LaunchTests驻留在src/main/java并且套件xml文件testng.xml引用中的类时,才会发生这种情况src/test/java。内的Java类src/main/java无法查看位于中的Java类src/test/java。这就解释了为什么TestNG抛出异常Cannot find class in classpath
而且,如果默认情况下LaunchTests进入该程序,src/test/java则它将不会包含在您正在构建的uber jar(可执行jar)中,因为省略了测试类。
因此,如果您确实希望能够做到这一点,则有两种选择
src/test/java到src/main/java,然后工作,它(Surefire插件在你的POM文件可能需要一些调整,让它知道你的测试源不配置src/test/java,但src/main/java。maven jar plugin通过参考here来使用类似于创建一罐测试类的东西。| 归档时间: |
|
| 查看次数: |
29430 次 |
| 最近记录: |