使用没有插件的maven在Eclipse中以编程方式运行testNG

时间:2015-06-21 10:47:36

标签: java eclipse maven testng

我想在普通的maven快速入门项目中运行TestNG而不使用“TestNG eclipse插件”。

无论我从http://testng.org/doc/documentation-main.html#running-testng-programmatically&其他来源,我知道使用类:

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

但在这里我得到例外:

例外框1

JNI Error

例外框2

Java Exception

控制台中的例外

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

即使我没有遇到任何编译时错误,我也无法解决为什么会出现问题。成功下载了TestNG依赖项,有助于编写代码。但是我认为这个类在运行时没有加载。可以做些什么?

如果没有使用任何XML导致错误,我也可以使用它,但不能使用TestNG的eclipse插件。

P.S。:我是TestNG的新手,这是我的第一个程序

1 个答案:

答案 0 :(得分:2)

这个问题正在发生,因为在运行时,类路径中没有testng jar。您可以在testng pom依赖项中使用<scope>compile</scope>而不是<scope>test</scope>来解决此问题。