我想在普通的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
例外框2
控制台中的例外
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的新手,这是我的第一个程序
答案 0 :(得分:2)
这个问题正在发生,因为在运行时,类路径中没有testng jar。您可以在testng pom依赖项中使用<scope>compile</scope>
而不是<scope>test</scope>
来解决此问题。