当前位置: 首页 > 面试题库 >

通过CLI执行testng.xml时出错:找不到或加载主类org.testng.TestNG

东郭赞
2023-03-14
问题内容

在开始之前,我是硒的新手。我查找了该问题的所有答案,但仍无法解决该问题。我的%claspath%等都是正确的。jar文件位于正确的文件夹等中。我完全不知道为什么这不起作用。我的猜测是我做的事很愚蠢,专家会迅速发现错误。

我能够在Eclipse中运行以下测试,它可以打开Firefox,并且可以毫无问题地运行该测试。如果我从cmd或Jenkins运行测试, 则会
出现以下错误:错误: 找不到或加载主类org.testng.TestNG

我将下面的实际信息替换为虚拟数据:

硒类

package package1;

import static org.junit.Assert.fail;

import java.util.concurrent.TimeUnit;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class login {
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();

  @Before
  public void setUp() throws Exception {
    System.setProperty("webdriver.gecko.driver","C:\\gecko\\geckodriver.exe");
    driver = new FirefoxDriver();
    baseUrl = "html" target="_blank">http://example.com";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void testLogin() throws Exception {
    driver.get(baseUrl + "index.php");
    driver.findElement(By.id("email")).clear();
    driver.findElement(By.id("email")).sendKeys("myemail@example.ie");
    driver.findElement(By.id("password")).clear();
    driver.findElement(By.id("password")).sendKeys("mypassword");
    driver.findElement(By.xpath("//input[@value='Login »']")).click();
  }

  @After
  public void tearDown() throws Exception {
    driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
      fail(verificationErrorString);
    }
  }

  private boolean isElementPresent(By by) {
    try {
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
      return false;
    }
  }

  private boolean isAlertPresent() {
    try {
      driver.switchTo().alert();
      return true;
    } catch (NoAlertPresentException e) {
      return false;
    }
  }

  private String closeAlertAndGetItsText() {
    try {
      Alert alert = driver.switchTo().alert();
      String alertText = alert.getText();
      if (acceptNextAlert) {
        alert.accept();
      } else {
        alert.dismiss();
      }
      return alertText;
    } finally {
      acceptNextAlert = true;
    }
  }
}

项目结构
这是我的项目结构:

textng.xml

<suite name="SampleSuite">

    <test name="LearningJenkins">

        <classes>

            <class name="package1.login"></class>

        </classes>

    </test>

</suite>

运行

cd C:\Users\keating99\workspace\FdimTests

java -cp C:\Users\keating99\workspace\FdimTests\lib*;C:\Users\keating99\workspace\FdimTests\bin org.testng.TestNG testng.xml

我确定我已经完美地设置了硒测试。我检查了类路径和项目路径,一切似乎都还可以。

根本没有任何帮助。再一次没有任何运气就查了所有其他答案。在此先感谢您的帮助:)

更新

C:\Users\keating99\workspace\FdimTests>java org.testng.TestNG testng.xml
Exception in thread "main" java.lang.NoClassDefFoundError: bsh/EvalError
        at org.testng.TestRunner.<init>(TestRunner.java:99)
        at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:508)
        at org.testng.SuiteRunner.init(SuiteRunner.java:142)
        at org.testng.SuiteRunner.<init>(SuiteRunner.java:106)
        at org.testng.TestNG.createSuiteRunner(TestNG.java:1116)
        at org.testng.TestNG.createSuiteRunners(TestNG.java:1103)
        at org.testng.TestNG.runSuitesLocally(TestNG.java:955)
        at org.testng.TestNG.run(TestNG.java:900)
        at org.testng.TestNG.privateMain(TestNG.java:1182)
        at org.testng.TestNG.main(TestNG.java:1146)
Caused by: java.lang.ClassNotFoundException: bsh.EvalError
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 10 more

问题答案:

执行 testng.xml 的最简单方法如下:

  • 通过 Windows资源管理器IDE(Eclipse) 获取 项目位置 ,然后转到“ 项目位置” 并创建目录 lib* *
  • 转储 lib 目录中的所有库(Selenium jar,TestNG)。
  • Project Directory中 ,通过CLI提供以下类路径:

    C:\Users\keating99\workspace\FdimTests>set classpath=C:\Users\keating99\workspace\FdimTests\bin;C:\Users\keating99\workspace\FdimTests\lib\*;
    
  • 现在,执行 testng.xml ,如下所示:

    C:\Users\keating99\workspace\FdimTests>java org.testng.TestNG testng.xml
    
  • 观察测试用例被执行。



 类似资料:
  • 我已经使用netbeans制作了jar文件,使用Build和Clean项目选项。我得到了.jar文件,现在当我执行它一小段时间后,cmd窗口出现,并给出一个错误:“Could not find or load main class while executing jar file” 但是,如果我使用命令提示符Java-jar执行jar,它可以正常工作 Netbeans的输出为: 而在jar文件中,

  • 我试图使用. sh文件打开我的jar。不过,我遇到了这个错误: 错误:无法找到或加载主类com。姆波尔德。哈兰伯特。主要的 据我所知,它存在并应该工作,这就是我的类的样子:类 这是我的宣言 清单版本:1.0 Archiver-版本:丛Archiver 内置: Martijn 创建者:Apache Maven 3.3.9 Build-Jdk: 1.8.0_131 主要课程:com。姆波尔德。哈兰伯特

  • 问题内容: 我在编译和运行Java代码时遇到了麻烦,该代码旨在允许我将Java与模拟建模包Vensim的共享对象接口。 以下代码编译没有错误: 但是,当我尝试运行以下命令时: 我收到以下错误:“错误:找不到或加载主类SpatialModel”。我的SpatialModel.java代码确实包含一个“主要”方法(如下),所以我不确定是什么问题- 有人可以帮我吗?谢谢。 问题答案: 您必须确保将文件的

  • 我一直在搜索这一点,但没有任何帮助,我试图运行的主要类,但不断得到一个错误。我负责这个 我的主文件位于中 我尝试了多个命令,但一无所获。 我想运行位于中的主类,但总是出现此错误,请提供帮助吗?

  • 我有一个名为TestInventory.java的类,其他类在默认包中,都在src文件夹中。然而,当我运行它时,我得到: 错误:找不到或加载主类

  • 首先,我知道这个问题经常被问到。但我的问题不同,所以请耐心看完整的描述。 而且布景似乎还不错。以前对我有用。但我运行了构建的jar,它表明“无法运行或加载主类”。 我发现如果我删除这些文件除了Manifest.mf。它可以很好地工作。我不知道设置有什么不同。 重建项目或重建工件jar。 但不是所有的方法都能奏效。并且我尝试在intellij中用相同的设置在MAC OS和windows OS中构建j