2017-04-12 2 views
1

우리는 일반적으로 TestNG xml 러너를 사용하여 Selenium 테스트를 실행합니다. 샘플 XML :셀레늄 TestNG : TestNG를 사용하여 컴파일 된 jar에서 셀렌 테스트를 어떻게 수행 할 수 있습니까?

<?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을 찾은 후 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.ClassNotFoundException을 받고 있어요 : XmlSuite 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] 

내 프로젝트가 메이븐 프로젝트이므로 메인 폴더와 테스트 폴더가 분리됩니다. enter image description here

미리 감사드립니다.

답변

3

필자는 testven jar로 테스트를 실행하고 maven 테스트 단계를 거치지 않은 것과 비슷한 요구 사항을 가졌습니다. 단계는 here을 문서화했습니다.

HTH

체크 포인트 아래
+0

이 대답을 수락하십시오. 감사! – iamkenos

0

문제가 해결 될 수 있습니다 :

  1. 당신이 TestNG를 관련된 JAR 파일 누락하지 않는 것을 확인하고 스레드에서 실행 단지로
  2. 예외 추가를 "주 "java.lang.NoClassDefFoundError : 실행하려고하는 클래스를 클래스 경로에서 찾을 수 없다는 것을 의미합니다. 대상/클래스를 한 번 확인하십시오.
  3. 각 클래스에 @Test 주석 사용