Bug in CheckClassAdapter? Fails for untransformed class
Hi,
I'm using ASM for a project, and am very impressed - really nice to use. I'm a
bit of a novice using ASM so not sure if I have found a bug, or doing something
wrong, but I found behaviour that I found odd.
I was trying to test my instrumentation by letting it transform every class
loaded by the JVM and came across a class untouched by my instrumentation, but
failed in the CheckClassAdapter. Upon further investigation I found it was
repeatable.
Below is my test case and output. I'm using ASM 3.3, and Sun JDK 1.6.0_05.
Cheers,
Ian
@Test
public void testCheckAdapter() throws Exception {
InputStream classStream =
this.getClass().getClassLoader().getResourceAsStream(SunRsaSign.class.getName()
.replace('.', '/') + ".class");
ByteArrayOutputStream out = new ByteArrayOutputStream();
PrintWriter pw = new PrintWriter(out, true);
CheckClassAdapter.verify(new ClassReader(classStream), false,
pw);
if(out.size() > 0) {
Assert.fail("Should not fail as as haven't done any
transformation from original class. Error is: " + out.toString());
}
}
Which gives the output:
java.lang.AssertionError: Should not fail as as haven't done any transformation
from original class. Error is:
org.objectweb.asm.tree.analysis.AnalyzerException: Error at instruction 18:
Method owner: expected Ljava/util/Map;, but found Ljava/lang/Object;
at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:291)
at
org.objectweb.asm.util.CheckClassAdapter.verify(CheckClassAdapter.java:224)
at
org.objectweb.asm.util.CheckClassAdapter.verify(CheckClassAdapter.java:250)
at com.iandjones.canal.ASMTest.testCheckAdapter(ASMTest.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja
va:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.jav
a:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java
:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
41)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:2
0)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:7
3)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:4
6)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestRefere
nce.java:46)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunne
r.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunne
r.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.jav
a:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.ja
va:197)
Caused by: org.objectweb.asm.tree.analysis.AnalyzerException: Method owner:
expected Ljava/util/Map;, but found Ljava/lang/Object;
at
org.objectweb.asm.tree.analysis.BasicVerifier.naryOperation(BasicVerifier.java:
395)
at org.objectweb.asm.tree.analysis.Frame.execute(Frame.java:593)
at org.objectweb.asm.tree.analysis.Analyzer.analyze(Analyzer.java:192)
... 27 more
<init>()V
00000 SunRsaSign . . : : ALOAD 0
00001 SunRsaSign . . : SunRsaSign : LDC "SunRsaSign"
00002 SunRsaSign . . : SunRsaSign String : LDC 1.5
00003 SunRsaSign . . : SunRsaSign String D : LDC "Sun RSA signature
provider"
00004 SunRsaSign . . : SunRsaSign String D String : INVOKESPECIAL
java/security/Provider.<init> (Ljava/lang/String;DLjava/lang/String;)V
00005 SunRsaSign . . : : INVOKESTATIC java/lang/System.getSecurityManager
()Ljava/lang/SecurityManager;
00006 SunRsaSign . . : SecurityManager : IFNONNULL L0
00007 SunRsaSign . . : : ALOAD 0
00008 SunRsaSign . . : SunRsaSign : GOTO L1
00009 SunRsaSign . . : : L0
00010 SunRsaSign . . : : NEW java/util/HashMap
00011 SunRsaSign . . : HashMap : DUP
00012 SunRsaSign . . : HashMap HashMap : INVOKESPECIAL
java/util/HashMap.<init> ()V
00013 SunRsaSign . . : Object : L1
00014 SunRsaSign . . : Object : ASTORE 1
00015 SunRsaSign Object . : : ALOAD 1
00016 SunRsaSign Object . : Object : LDC "KeyFactory.RSA"
00017 SunRsaSign Object . : Object String : LDC
"sun.security.rsa.RSAKeyFactory"
00018 SunRsaSign Object . : Object String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00019 SunRsaSign HashMap . : Object : POP
00020 SunRsaSign HashMap . : : ALOAD 1
00021 SunRsaSign HashMap . : HashMap : LDC "KeyPairGenerator.RSA"
00022 SunRsaSign HashMap . : HashMap String : LDC
"sun.security.rsa.RSAKeyPairGenerator"
00023 SunRsaSign HashMap . : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00024 SunRsaSign HashMap . : Object : POP
00025 SunRsaSign HashMap . : : ALOAD 1
00026 SunRsaSign HashMap . : HashMap : LDC "Signature.MD2withRSA"
00027 SunRsaSign HashMap . : HashMap String : LDC
"sun.security.rsa.RSASignature$MD2withRSA"
00028 SunRsaSign HashMap . : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00029 SunRsaSign HashMap . : Object : POP
00030 SunRsaSign HashMap . : : ALOAD 1
00031 SunRsaSign HashMap . : HashMap : LDC "Signature.MD5withRSA"
00032 SunRsaSign HashMap . : HashMap String : LDC
"sun.security.rsa.RSASignature$MD5withRSA"
00033 SunRsaSign HashMap . : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00034 SunRsaSign HashMap . : Object : POP
00035 SunRsaSign HashMap . : : ALOAD 1
00036 SunRsaSign HashMap . : HashMap : LDC "Signature.SHA1withRSA"
00037 SunRsaSign HashMap . : HashMap String : LDC
"sun.security.rsa.RSASignature$SHA1withRSA"
00038 SunRsaSign HashMap . : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00039 SunRsaSign HashMap . : Object : POP
00040 SunRsaSign HashMap . : : ALOAD 1
00041 SunRsaSign HashMap . : HashMap : LDC "Signature.SHA256withRSA"
00042 SunRsaSign HashMap . : HashMap String : LDC
"sun.security.rsa.RSASignature$SHA256withRSA"
00043 SunRsaSign HashMap . : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00044 SunRsaSign HashMap . : Object : POP
00045 SunRsaSign HashMap . : : ALOAD 1
00046 SunRsaSign HashMap . : HashMap : LDC "Signature.SHA384withRSA"
00047 SunRsaSign HashMap . : HashMap String : LDC
"sun.security.rsa.RSASignature$SHA384withRSA"
00048 SunRsaSign HashMap . : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00049 SunRsaSign HashMap . : Object : POP
00050 SunRsaSign HashMap . : : ALOAD 1
00051 SunRsaSign HashMap . : HashMap : LDC "Signature.SHA512withRSA"
00052 SunRsaSign HashMap . : HashMap String : LDC
"sun.security.rsa.RSASignature$SHA512withRSA"
00053 SunRsaSign HashMap . : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00054 SunRsaSign HashMap . : Object : POP
00055 SunRsaSign HashMap . : : LDC
"java.security.interfaces.RSAPublicKey|java.security.interfaces.RSAPrivateKey"
00056 SunRsaSign HashMap . : String : ASTORE 2
00057 SunRsaSign HashMap String : : ALOAD 1
00058 SunRsaSign HashMap String : HashMap : LDC "Signature.MD2withRSA
SupportedKeyClasses"
00059 SunRsaSign HashMap String : HashMap String : ALOAD 2
00060 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00061 SunRsaSign HashMap String : Object : POP
00062 SunRsaSign HashMap String : : ALOAD 1
00063 SunRsaSign HashMap String : HashMap : LDC "Signature.MD5withRSA
SupportedKeyClasses"
00064 SunRsaSign HashMap String : HashMap String : ALOAD 2
00065 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00066 SunRsaSign HashMap String : Object : POP
00067 SunRsaSign HashMap String : : ALOAD 1
00068 SunRsaSign HashMap String : HashMap : LDC "Signature.SHA1withRSA
SupportedKeyClasses"
00069 SunRsaSign HashMap String : HashMap String : ALOAD 2
00070 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00071 SunRsaSign HashMap String : Object : POP
00072 SunRsaSign HashMap String : : ALOAD 1
00073 SunRsaSign HashMap String : HashMap : LDC "Signature.SHA256withRSA
SupportedKeyClasses"
00074 SunRsaSign HashMap String : HashMap String : ALOAD 2
00075 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00076 SunRsaSign HashMap String : Object : POP
00077 SunRsaSign HashMap String : : ALOAD 1
00078 SunRsaSign HashMap String : HashMap : LDC "Signature.SHA384withRSA
SupportedKeyClasses"
00079 SunRsaSign HashMap String : HashMap String : ALOAD 2
00080 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00081 SunRsaSign HashMap String : Object : POP
00082 SunRsaSign HashMap String : : ALOAD 1
00083 SunRsaSign HashMap String : HashMap : LDC "Signature.SHA512withRSA
SupportedKeyClasses"
00084 SunRsaSign HashMap String : HashMap String : ALOAD 2
00085 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00086 SunRsaSign HashMap String : Object : POP
00087 SunRsaSign HashMap String : : ALOAD 1
00088 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.KeyFactory.1.2.840.113549.1.1"
00089 SunRsaSign HashMap String : HashMap String : LDC "RSA"
00090 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00091 SunRsaSign HashMap String : Object : POP
00092 SunRsaSign HashMap String : : ALOAD 1
00093 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.KeyFactory.OID.1.2.840.113549.1.1"
00094 SunRsaSign HashMap String : HashMap String : LDC "RSA"
00095 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00096 SunRsaSign HashMap String : Object : POP
00097 SunRsaSign HashMap String : : ALOAD 1
00098 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.KeyPairGenerator.1.2.840.113549.1.1"
00099 SunRsaSign HashMap String : HashMap String : LDC "RSA"
00100 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00101 SunRsaSign HashMap String : Object : POP
00102 SunRsaSign HashMap String : : ALOAD 1
00103 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.KeyPairGenerator.OID.1.2.840.113549.1.1"
00104 SunRsaSign HashMap String : HashMap String : LDC "RSA"
00105 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00106 SunRsaSign HashMap String : Object : POP
00107 SunRsaSign HashMap String : : ALOAD 1
00108 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.1.2.840.113549.1.1.2"
00109 SunRsaSign HashMap String : HashMap String : LDC "MD2withRSA"
00110 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00111 SunRsaSign HashMap String : Object : POP
00112 SunRsaSign HashMap String : : ALOAD 1
00113 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.OID.1.2.840.113549.1.1.2"
00114 SunRsaSign HashMap String : HashMap String : LDC "MD2withRSA"
00115 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00116 SunRsaSign HashMap String : Object : POP
00117 SunRsaSign HashMap String : : ALOAD 1
00118 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.1.2.840.113549.1.1.4"
00119 SunRsaSign HashMap String : HashMap String : LDC "MD5withRSA"
00120 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00121 SunRsaSign HashMap String : Object : POP
00122 SunRsaSign HashMap String : : ALOAD 1
00123 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.OID.1.2.840.113549.1.1.4"
00124 SunRsaSign HashMap String : HashMap String : LDC "MD5withRSA"
00125 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00126 SunRsaSign HashMap String : Object : POP
00127 SunRsaSign HashMap String : : ALOAD 1
00128 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.1.2.840.113549.1.1.5"
00129 SunRsaSign HashMap String : HashMap String : LDC "SHA1withRSA"
00130 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00131 SunRsaSign HashMap String : Object : POP
00132 SunRsaSign HashMap String : : ALOAD 1
00133 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.OID.1.2.840.113549.1.1.5"
00134 SunRsaSign HashMap String : HashMap String : LDC "SHA1withRSA"
00135 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00136 SunRsaSign HashMap String : Object : POP
00137 SunRsaSign HashMap String : : ALOAD 1
00138 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.1.3.14.3.2.29"
00139 SunRsaSign HashMap String : HashMap String : LDC "SHA1withRSA"
00140 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00141 SunRsaSign HashMap String : Object : POP
00142 SunRsaSign HashMap String : : ALOAD 1
00143 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.1.2.840.113549.1.1.11"
00144 SunRsaSign HashMap String : HashMap String : LDC "SHA256withRSA"
00145 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00146 SunRsaSign HashMap String : Object : POP
00147 SunRsaSign HashMap String : : ALOAD 1
00148 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.OID.1.2.840.113549.1.1.11"
00149 SunRsaSign HashMap String : HashMap String : LDC "SHA256withRSA"
00150 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00151 SunRsaSign HashMap String : Object : POP
00152 SunRsaSign HashMap String : : ALOAD 1
00153 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.1.2.840.113549.1.1.12"
00154 SunRsaSign HashMap String : HashMap String : LDC "SHA384withRSA"
00155 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00156 SunRsaSign HashMap String : Object : POP
00157 SunRsaSign HashMap String : : ALOAD 1
00158 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.OID.1.2.840.113549.1.1.12"
00159 SunRsaSign HashMap String : HashMap String : LDC "SHA384withRSA"
00160 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00161 SunRsaSign HashMap String : Object : POP
00162 SunRsaSign HashMap String : : ALOAD 1
00163 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.1.2.840.113549.1.1.13"
00164 SunRsaSign HashMap String : HashMap String : LDC "SHA512withRSA"
00165 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00166 SunRsaSign HashMap String : Object : POP
00167 SunRsaSign HashMap String : : ALOAD 1
00168 SunRsaSign HashMap String : HashMap : LDC
"Alg.Alias.Signature.OID.1.2.840.113549.1.1.13"
00169 SunRsaSign HashMap String : HashMap String : LDC "SHA512withRSA"
00170 SunRsaSign HashMap String : HashMap String String : INVOKEINTERFACE
java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
00171 SunRsaSign HashMap String : Object : POP
00172 SunRsaSign HashMap String : : ALOAD 1
00173 SunRsaSign HashMap String : HashMap : ALOAD 0
00174 SunRsaSign HashMap String : HashMap SunRsaSign : IF_ACMPEQ L2
00175 SunRsaSign HashMap String : : NEW sun/security/action/PutAllAction
00176 SunRsaSign HashMap String : PutAllAction : DUP
00177 SunRsaSign HashMap String : PutAllAction PutAllAction : ALOAD 0
00178 SunRsaSign HashMap String : PutAllAction PutAllAction SunRsaSign :
ALOAD 1
00179 SunRsaSign HashMap String : PutAllAction PutAllAction SunRsaSign HashMap
: INVOKESPECIAL sun/security/action/PutAllAction.<init>
(Ljava/security/Provider;Ljava/util/Map;)V
00180 SunRsaSign HashMap String : PutAllAction : INVOKESTATIC
java/security/AccessController.doPrivileged
(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
00181 SunRsaSign HashMap String : Object : POP
00182 SunRsaSign HashMap String : : L2
00183 SunRsaSign HashMap String : : RETURN
at org.junit.Assert.fail(Assert.java:91)
at com.iandjones.canal.ASMTest.testCheckAdapter(ASMTest.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja
va:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.jav
a:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java
:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
41)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:2
0)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:7
3)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:4
6)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestRefere
nce.java:46)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunne
r.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunne
r.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.jav
a:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.ja
va:197)