web-dev-qa-db-ja.com

メインメソッドからTestNGを実行しようとしたときにクラスパスにクラスが見つかりません

私は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();

}

}

私の推測では、POM.xmlに何かを追加する必要がありますか?

Eclipseからtestngテストを手動で実行する場合、またはmvn clean test(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)

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>
3
dsidler

私はエンジニアの一人のためにこれを解決しました。彼は最新のtestngプラグインに更新していましたが、ビルドパスをtestng 6.11 jarファイルに更新することで問題を解決しました(以前は6.9.6でした)。