运行 在没有插件的情况下使用 maven 在 Eclipse 中以编程方式测试 NG
Run testNG programatically in Eclipse using maven without a plugin
我想 运行 TestNG 而不是在普通的 maven 快速启动项目中使用 "TestNG eclipse plugin"。
无论我从 http://testng.org/doc/documentation-main.html#running-testng-programmatically 和其他来源读到什么,我都想到了使用 classes 作为:
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 依赖已成功下载并有助于编写代码。但是我猜 class 不会在 运行 时间加载。可以做什么?
如果不使用任何 XML 导致错误,我也可以使用它,但不能使用 TestNG 的 eclipse 插件。
P.S.: 我是 TestNG 的新手,这是我的第一个程序
发生此问题是因为在运行时,testng jar 在类路径中不可用。您可以通过在 testng pom 依赖项中使用 <scope>compile</scope>
而不是 <scope>test</scope>
来解决此问题。
我想 运行 TestNG 而不是在普通的 maven 快速启动项目中使用 "TestNG eclipse plugin"。
无论我从 http://testng.org/doc/documentation-main.html#running-testng-programmatically 和其他来源读到什么,我都想到了使用 classes 作为:
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 依赖已成功下载并有助于编写代码。但是我猜 class 不会在 运行 时间加载。可以做什么?
如果不使用任何 XML 导致错误,我也可以使用它,但不能使用 TestNG 的 eclipse 插件。
P.S.: 我是 TestNG 的新手,这是我的第一个程序
发生此问题是因为在运行时,testng jar 在类路径中不可用。您可以通过在 testng pom 依赖项中使用 <scope>compile</scope>
而不是 <scope>test</scope>
来解决此问题。