最初に言うと、私は何度も何度も試しましたが、今は助けが必要です
私のコードはこちら
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
[パーサー] 実行中: C:\MockWorkspace\Mock\temp-testng-customsuite.xml
オブジェクトファクトリを取得しました 私を印刷してください 呼び出された静的メソッド 失敗: testMe java.lang.IllegalStateException: 利用可能なモックの最後の呼び出しがありません org.easymock.EasyMock.getControlForLastCall(EasyMock.java:521) で org.easymock.EasyMock.expect(EasyMock.java:499) で staticPkg.TestClass.testMe(TestClass.java:46) で ... 22 個のスタック フレームを削除しました =============================================== staticPkg.TestClass テストの実行: 1、失敗: 1、スキップ: 0 =============================================== =============================================== モック 実行されたテストの合計: 1、失敗: 1、スキップ: 0 ===============================================
助けてください、私はさまざまな解決策を試しましたが、解決できません。誰でもこのコードを試して、成功するように修正できますか? EasyMock.expect でエラーが発生する ................
http://blogs.bytecode.com.au/glen/2006/10/12/doing-bytecode-kungfu-with-javassist.html で回避策を見つけました。.また行き詰まってしまう 私のテストケースは、単独で実行すると正常に動作しますが、Ant で実行すると問題が発生します。異なるファイルの他のテスト ケースが干渉している可能性があります。私の個々のテストケースが @PrepareTest & easymock/powermock を使用していたときに、同じエラーが発生しました
[テスト] ====================静的呼び出し======================== == [testng] javassist.CannotCompileException: by java.lang.LinkageError: ローダー (sun/misc/Launcher$AppClass Loader のインスタンス): 名前の重複クラス定義を試行しました: "com/symantec/mobius/aggregator/submission/SubmissionFactory" [testng] at javassist.ClassPool.toClass(ClassPool.java:1085) [testng] at javassist.ClassPool.toClass(ClassPool.java:1028) [testng] at javassist.ClassPool.toClass(ClassPool.java:986) [testng] ] javassist.CtClass.toClass(CtClass.java:1110) で