Skip to content
This repository was archived by the owner on Sep 10, 2022. It is now read-only.
This repository was archived by the owner on Sep 10, 2022. It is now read-only.

Cannot instrument static methods #5

Description

@CappCorp

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions