簡體   English   中英

Selenium TestNG:如何使用TestNG從編譯的jar運行selenium測試?

[英]Selenium TestNG: How can I run selenium tests from a compiled jar using TestNG?

我們通常使用TestNG xml runner運行我們的Selenium測試。 示例XML:

<?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文件中運行所有內容。

我找到了這篇 SO帖子,並試用了TestNG網站上的這個解決方案。

我創建了我的主類並指出要運行的類。

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();
    }
}

在將項目導出到jar之前,我嘗試運行main,但是我在這一行得到了一個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項目,所以主要和測試文件夾是分開的。 在此輸入圖像描述

提前致謝!

我有一個類似的要求,其中我必須運行測試作為testng jar而不是通過maven測試階段。 這里記錄的步驟。

HTH

檢查點下方可能會解決您的問題:

  1. 確保您沒有遺漏任何與TestNG相關的JAR文件,並將它們添加為可執行文件jar
  2. 線程“main”中的異常java.lang.NoClassDefFoundError:表示在類路徑中找不到您嘗試運行的類。 檢查目標/類一次。
  3. 為每個類使用@Test注釋

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM