2017-04-12 124 views
1

我们通常使用TestNG xml runner来启动我们的Selenium测试。 示例XML:Selenium TestNG:如何使用TestNG从编译的jar中运行selenium测试?

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="P1_jobSeeker" parallel="classes" preserve-order="true" thread-count="1"> 
    <test name="P1_jobSeeker-1"> 
    <classes> 
     <class name="pamr.testCases.jobSeeker.PAMRAutoJS12Part1"/> 
     <class name="pamr.testCases.jobSeeker.PAMRAutoJS12Part2"/> 
     <class name="pamr.testCases.jobSeeker.PAMRAutoJS12Part3"/> 
    </classes> 
    </test> 
</suite> 

现在,我想这样做没有源文件,在IDE外部,只是运行一切从编译过的jar文件。

我发现this SO帖子,并尝试从TestNG网站的this解决方案。

我创建了我的主类,并指出要运行的类。

import java.util.ArrayList; 
import java.util.List; 

import org.testng.TestNG; 
import org.testng.xml.XmlClass; 
import org.testng.xml.XmlSuite; 
import org.testng.xml.XmlTest; 

public class Main { 
    public static void main(String[] args) { 
     XmlSuite suite = new XmlSuite(); 
     suite.setName("P1_jobSeeker"); 

     XmlTest test = new XmlTest(suite); 
     test.setName("P1_jobSeeker-1"); 
     List<XmlClass> classes = new ArrayList<XmlClass>(); 
     classes.add(new XmlClass("pamr.testCases.jobSeeker.PAMRAutoJS12Part1")); 
     classes.add(new XmlClass("pamr.testCases.jobSeeker.PAMRAutoJS12Part2")); 
     classes.add(new XmlClass("pamr.testCases.jobSeeker.PAMRAutoJS12Part3")); 
     test.setXmlClasses(classes); 

     List<XmlSuite> suites = new ArrayList<XmlSuite>(); 
     suites.add(suite); 
     TestNG tng = new TestNG(); 
     tng.setXmlSuites(suites); 
     tng.run(); 
    } 
} 

之前的项目导出到一个罐子,我试图运行为主,但我在这条线得到一个java.lang.ClassNotFoundExceptionXmlSuite suite = new XmlSuite();

全台堆栈:

Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/xml/XmlSuite 
    at Main.main(Main.java:11) 
Caused by: java.lang.ClassNotFoundException: org.testng.xml.XmlSuite 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 1 more 
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [util.c:840] 

这可能是值得关注我的项目是一个maven项目,所以主要和测试文件夹是分开的。 enter image description here

在此先感谢!

回答

3

我有一个类似的要求,我必须运行测试作为testng jar而不是通过maven测试阶段。记录的步骤为here

HTH

+0

接受此答案。谢谢! – iamkenos

0

下面的检查站可以解决您的问题:

  1. 确保您不会错过与TestNG的任何JAR文件,并将它们在线程添加为可执行罐子
  2. 异常“主“java.lang.NoClassDefFoundError:意味着你正在尝试运行的类在类路径中找不到。检查目标/课程一次。
  3. 每个班级使用@Test注释
相关问题