Прежде всего, я попробовал и попробовал снова, и теперь мне нужна помощь
Вот мой код
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] Запуск: 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
===============================================
Помогите, пожалуйста, я пробовал множество решений, не могу сделать это.Пожалуйста, кто-нибудь может попробовать этот код и исправить его для успеха?Я получаю сообщение об ошибке в EasyMock.expect ...............
Получил работу в http://blogs.bytecode.com.au/glen/2006/10/12/doing-bytecode-kungfu-with-javassist.html И это работает, но подождите .......... Я снова застрял Мой тестовый сценарий работает нормально, когда запускается один, но при запуске с Ant, это создает проблемы.Могут быть мешающие другие тестовые случаи разных файлов.Я получил ту же ошибку, когда мой индивидуальный тестовый случай использовал @PrepareTest & easymock / powermock
[testng] ========================== STATIC CALLED=========================== [testng] javassist.CannotCompileException: от java.lang.LinkageError: загрузчик (экземпляр sun / misc / Launcher$ AppClass Loader): попытка дублирования определения класса для имени: «com / symantec / mobius / aggregator / submission / SubmissionFactory» [testng] в javassist.ClassPool.toClass (ClassPool.java:1085) [testng] в javassist.ClassPool.toClass(ClassPool.java:1028) [testng] в javassist.ClassPool.toClass (ClassPool.java:986) [testng] в javassist.CtClass.toClass (CtClass.java:1110)