This repository was archived by the owner on Sep 10, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 59
This repository was archived by the owner on Sep 10, 2022. It is now read-only.
Cannot instrument static methods #5
Copy link
Copy link
Open
Labels
Description
Hi,
I tried getting information regarding this but could not find any. It seems I cannot instrument static methods to test them with thread weaver.
Here is a basic example of what I try to achieve:
public class DoClass {
public static void doTheThing() {
System.out.println("do");
}
}public class DoClassTest {
@ThreadedBefore
public void before() {}
@ThreadedMain
public void mainThread() {
DoClass.doTheThing();
}
@ThreadedSecondary
public void secondThread() {
DoClass.doTheThing();
}
@ThreadedAfter
public void after() {}
@Test
public void runThreadedTests() {
new AnnotatedTestRunner().runTests(DoClassTest.class, DoClass.class);
}
}All I end up with is this nasty exception:
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.google.testing.threadtester.MethodCaller.invoke(MethodCaller.java:71)
at com.google.testing.threadtester.BaseThreadedTestRunner.runTests(BaseThreadedTestRunner.java:179)
at com.google.testing.threadtester.BaseThreadedTestRunner.runTests(BaseThreadedTestRunner.java:143)
at DoClassTest.runThreadedTests(DoClassTest.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:483)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.google.testing.threadtester.MethodCaller.invoke(MethodCaller.java:68)
... 13 more
Caused by: java.lang.IllegalArgumentException: Cannot find method public static void DoClass.doTheThing()
at com.google.testing.threadtester.ClassInstrumentationImpl.getMethod(ClassInstrumentationImpl.java:113)
at com.google.testing.threadtester.InterleavedRunner.getMainMethod(InterleavedRunner.java:116)
at com.google.testing.threadtester.InterleavedRunner.doInterleave(InterleavedRunner.java:131)
at com.google.testing.threadtester.InterleavedRunner.interleave(InterleavedRunner.java:80)
at com.google.testing.threadtester.AnnotatedTestWrapper.runTestCases(AnnotatedTestWrapper.java:258)
at com.google.testing.threadtester.AnnotatedTestWrapper.runTests(AnnotatedTestWrapper.java:242)
... 16 more
Is this a known issue ? Am I doing something wrong ?
Thanks