2017-04-12 141 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註釋
相關問題