我每天使用Maven在Jenkins上运行TestNG测试。我很少(似乎也是随机的)得到一个NoClassDefFoundError。如果我重新运行测试,它通常会正常通过。当我将ClassName.class
作为参数传递给方法时,似乎正在发生这种情况。
它被抛出用于不同的类,但总是在调用此方法时:
// page object for selenium
// line 166 in stack trace below
Page.getObject(webDriver, PageClass.class);
所以在这种情况下,错误将是:
java.lang.NoClassDefFoundError: path/to/PageClass
但正如我所说,PageClass可能有所不同。
完整堆栈跟踪:
java.lang.NoClassDefFoundError: path/to/PageClass
path.to.DifferentPageClass.someMethod(DifferentPageClass.java:166)
path.to.LibClass.someMethod(LibClass.java:132)
path.to.SuiteClass.testMethod(SuiteClass.java:332)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
org.testng.internal.MethodInvocationHelper$1.runTestMethod(MethodInvocationHelper.java:200)
com.bigweb.weather.test.utility.BaseTest.run(BaseTest.java:88)
org.testng.internal.MethodInvocationHelper.invokeHookable(MethodInvocationHelper.java:212)
org.testng.internal.Invoker.invokeMethod(Invoker.java:689)
org.testng.internal.Invoker.retryFailed(Invoker.java:1027)
org.testng.internal.TestMethodWithDataProviderMethodWorker.call(TestMethodWithDataProviderMethodWorker.java:95)
org.testng.internal.TestMethodWithDataProviderMethodWorker.call(TestMethodWithDataProviderMethodWorker.java:14)
java.util.concurrent.FutureTask.run(FutureTask.java:262)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
java.util.concurrent.FutureTask.run(FutureTask.java:262)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
如何找到这个的根本原因?
答案 0 :(得分:0)
之前我有类似的东西,因为测试破了,所有其他测试都受到了损害而且没有用。
我不太了解你的环境。所以,我会尝试一些步骤: