Pour vous dire d'abord, je l'ai essayé et essayé encore et maintenant je besoin d'aideCant fonctions statiques simulées avec powermock-easymock-testng (projet non-maven)
Heres mon code
package staticPkg;
public class Static {
public static final String staticMethod() {
System.out.println("Static method called");
return "Static called";
}
}
package staticPkg;
public class TargetClass {
Static staticClass;
public String callHere() {
return Static.staticMethod();
}
}
package staticPkg;
import org.easymock.EasyMock;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.testng.IObjectFactory;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.ObjectFactory;
import org.testng.annotations.Test;
@PrepareForTest({Static.class})
public class TestClass {
Static staticClass = null;
@ObjectFactory
public IObjectFactory getObjectFactory() {
System.out.println("got object factory");
return new org.powermock.modules.testng.PowerMockObjectFactory();
}
@BeforeMethod
public void setup() {
System.out.println("print me");
PowerMock.mockStatic(Static.class);
staticClass = PowerMock.createMock(Static.class);
}
@Test
public void testMe() {
EasyMock.expect(Static.staticMethod()).andReturn("Mock called").anyTimes();
PowerMock.replay(Static.class,staticClass);
TargetClass tc = new TargetClass();
String output = tc.callHere();
PowerMock.verify(Static.class,staticClass);
System.out.println(output);
}
}
And heres the log
[Parser] course à pied: C: \ MockWorkspace \ Mock \ temp-testng-customsuite.xml
got object factory print me Static method called FAILED: testMe java.lang.IllegalStateException: no last call on a mock available at org.easymock.EasyMock.getControlForLastCall(EasyMock.java:521) at org.easymock.EasyMock.expect(EasyMock.java:499) at staticPkg.TestClass.testMe(TestClass.java:46) ... Removed 22 stack frames =============================================== staticPkg.TestClass Tests run: 1, Failures: 1, Skips: 0 =============================================== =============================================== Mock Total tests run: 1, Failures: 1, Skips: 0 ===============================================
Il lp s'il vous plaît, j'ai essayé une variété de solutions, ne peut pas le faire. S'il vous plaît quelqu'un peut-il essayer ce code et le corriger pour le succès? je reçois erreur dans EasyMock.expect ...............
obtenu un emploi autour de http://blogs.bytecode.com.au/glen/2006/10/12/doing-bytecode-kungfu-with-javassist.html Et ça marche Mais attendez .......... Je suis coincé à nouveau Mon test fonctionne très bien quand il fonctionne seul, mais lorsqu'il est exécuté avec Ant, cela pose problème. Peut-être que d'autres cas de test de fichiers différents interfèrent. j'ai eu la même erreur, quand mon cas de test individuel utilisait @PrepareTest & easymock/powermock
[testng] = ==================== APPELLE STATIC ============================= [testng] javassist.CannotCompileException: par java.lang.LinkageError: loader (instance de sun/misc/Launcher $ AppClass Loader): tentative de définition de classe dupliquée pour le nom: "com/symantec/mobius/aggregator/soumission/SubmissionFactory" [testng] à javassist.ClassPool.toClass (ClassPool.java:1085) [testng] at javassist. ClassPool.toClass (ClassPool.java:1028) [testng] à javassist.ClassPool.toClass (ClassPool.java:986) [testng] à javassist.CtClass.toClass (CtClass.java:1110)
Salut Sunil, Bienvenue au débordement de pile. Pour référence ultérieure, si vous allez coller du code XML ou HTML (ou tout autre code/langue), assurez-vous de le marquer comme code (bouton editor ou ctrl-K) car sinon il pourrait ne pas être visible. – Basic