当前位置: 首页 > 知识库问答 >
问题:

在Eclipse中使用maven以编程方式运行testNG而不使用插件

华星文
2023-03-14

我希望在一个普通的maven quickstart项目中运行TestNG,而不使用“TestNG eclipse插件”。

无论我从http://testng.org/doc/documentation-main.html#running-testng-programmily和其他来源中读到什么,我都知道如何使用类:

messageUtil.java

package com.mytests.testng;

public class MessageUtil {
   private String message;

   public MessageUtil(String message){
      this.message = message;
   }

   public String printMessage(){
      System.out.println(message);
      return message;
   }   
}

testngexample.java

package com.mytests.testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class TestNGExample {
   String message = "Hello World";  
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {   
      Assert.assertEquals(message,messageUtil.printMessage());
   }
}

app.java

package com.mytests.testng;

import org.testng.TestListenerAdapter;
import org.testng.TestNG;

public class App
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        TestListenerAdapter tla = new TestListenerAdapter();
        TestNG testNG = new TestNG();

        @SuppressWarnings("rawtypes")
        Class[] testClasses = new Class[]{
                TestNGExample.class
        };

        testNG.setTestClasses(testClasses);
        testNG.addListener(tla);
        testNG.run();
    }
}

但这里我有例外:

Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/ITestListener
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.privateGetMethodRecursive(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.testng.ITestListener
    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)
    ... 7 more

共有1个答案

单于善
2023-03-14

出现此问题是因为在运行时,testng jar在类路径中不可用。您可以通过在testng pom依赖项中使用 compile 而不是 test 来解决这个问题。

 类似资料:
  • 我使用java类从excel文件动态生成testNG xml。我使用allure-cli在测试执行结束时生成allure报告。 我正在使用maven-surefire插件进行以下配置。 当测试由maven目标和阶段触发时,我能够生成包含完整日志和屏幕截图的诱惑力报告,这些日志和屏幕截图由诱惑力注释(@step、@attachments、@Story…)附加。 但是,当java类(生成testNG

  • 本文向大家介绍详解eclipse中Maven工程使用Tomcat7以上插件的方法,包括了详解eclipse中Maven工程使用Tomcat7以上插件的方法的使用技巧和注意事项,需要的朋友参考一下 Maven中使用tomcat:run命令默认是使用Tomcat6的版本, 现在要用到Tomcat7以上的版本,在eclipse的Maven工程中配置如下 第一步:在项目的pom里面加入如下配置: 官网配置

  • 我最近尝试使用,因为它显然是Maven宇宙中构建和包发布的推荐方式。 但是我想在Eclipse中使用它,因为我的开发工作流程的其余部分是基于Eclipse的。我通常通过作为Eclipse Juno(4.2)的一部分提供的m2eclipse插件运行Maven命令 当我尝试在 Eclipse 中运行 “release:prepare” 时,我注意到了一些奇怪的事情: 在根项目目录中创建了一些额外的文件

  • 使用 lavas init 创建的模板项目中,在以下场景下都会以编程方式使用 Lavas: server.dev.js 开发环境下的 SPA/SSR 模式。 server.prod.js 生产环境下的 SSR 模式。 可见以编程方式使用 Lavas 的主要场景就是 SSR 模式,而在 SPA 模式下仅仅是供开发服务器使用。因此,如果开发者选择了 SSR 模式,阅读下面的内容将十分有帮助: 如何选择

  • 问题内容: 我已经搜索了其他问题,但是似乎仍然无法在swift 3中使用自动布局以编程方式创建我的scrollView。我可以使我的scrollview出现,如下图所示,但是当我滚动到底部时,其他标签可以显示不会显示,并且“滚动顶部”标签不会消失。 希望有人可以帮助您在下面查看我的代码! 问题答案: 使用约束定义滚动内容大小很容易-因此您不必进行任何手动计算。 只记得: 滚动视图的 内容元素 必须