2016-04-11 10 views
1

Ich benutze Java 6. Wenn ich den jmockit Test mit Java-Agent -javaagent:C:\jmockit-1.20.jar ausführen, funktioniert es gut. Aber wenn ich es entferne ich bekommen unten FehlerJava-Agent ist obligatorisch für jmockit Testfall auf Java 6?

java.lang.Exception: Method testData_1 should have no parameters 
    at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java:69) 
    at org.junit.runners.ParentRunner.validatePublicVoidNoArgMethods(ParentRunner.java:131) 
    at org.junit.runners.BlockJUnit4ClassRunner.validateTestMethods(BlockJUnit4ClassRunner.java:178) 
    at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:163) 
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:102) 
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:344) 

Wie ich im Internet, die auf JDK lesen 1.6+ Anbringen Java-Agent ist keine solche Anforderung ist, da JMockit transparent die Java-Agenten bei Bedarf geladen werden können durch die API-Attach verwenden. Aber warum dann werfen Fehler ohne Java-Agent?

Antwort

1

Wie Sie JUnit verwenden Ihre Tests auszuführen, entweder

  • Vergewissern Sie sich, dass jmockit.jar vor JUnit im Classpath
  • oder mit Anmerkungen versehen Testklassen mit @RunWith(JMockit.class)
  • oder stellen Sie die Java-Agent-Option erscheint

Jede dieser Optionen ermöglicht es JMockit, sich ordnungsgemäß zu initialisieren vor JUnit beginnt zu laufen.

+0

versucht mit '@ RunWith (JMockit.class)' und entfernen Sie Java-Agent. Funktioniert nicht . Same errror – emilly

+0

Ah, nun, vielleicht hat das nichts mit 'JMockit' zu tun? Der Fehler besagt, dass in Ihrer Testmethode Parameter definiert sind, die ungültig sind. Entfernen Sie also die Annotation "@ Test" von "testupdatePaymentData_1" oder entfernen Sie die Parameter dieser Methode. – Vampire

+0

gut, wenn ich @Test entferne, wird es nicht als Testfall erkannt. Auch ich kann die Parameter dieser Methode nicht entfernen, da ich sie brauche. – emilly