TER*_*ytE 4 java testng unit-testing jar executable-jar
我有一个可执行的JAR,它包含所有依赖项和测试类.我已经确认在执行jar时会调用main()方法.我正在尝试向main()添加代码,以便我可以运行特定的TestNG测试类.从TestNG.org上的文档来看,这似乎就是这样做的:
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { com.some.path.tests.MyTests.class });
testng.addListener(tla);
testng.run();
Run Code Online (Sandbox Code Playgroud)
我的文件夹结构很典型:
/src/main/java/Main.java
/src/test/java/com/some/path/tests/MyTests.java
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译它时,我收到此错误:
java: /src/main/java/Main.java:46: package com.some.path.tests does not exist
Run Code Online (Sandbox Code Playgroud)
无论如何我可以改变我的项目,以便main()中的testng.setTestClasses()可以访问测试类吗?
我在main()方法中使用了以下内容并且它有效.
CommandLineOptions options = new CommandLineOptions();
JCommander jCommander = new JCommander(options, args);
XmlSuite suite = new XmlSuite();
suite.setName("MyTestSuite");
suite.setParameters(options.convertToMap());
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(new XmlClass("com.some.path.tests.MyTests"));
XmlTest test = new XmlTest(suite);
test.setName("MyTests");
test.setXmlClasses(classes);
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG testNG = new TestNG();
testNG.setXmlSuites(suites);
testNG.run();
Run Code Online (Sandbox Code Playgroud)
您可以在main中使用org.testng.xml.Parser和加载常用的xmlorg.testng.xml.XmlSuite
String xmlFileName = "testng.xml";
List<XmlSuite> suite;
try
{
suite = (List <XmlSuite>)(new Parser(xmlFileName).parse());
testng.setXmlSuites(suite);
testng.run();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
catch (SAXException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16512 次 |
| 最近记录: |