EasyMock3.1/testNg-5.7/Powermock-easymock-1.5-full を使用しています。コードは非常に単純で、 public static メソッドをモックするだけです。
import static org.powermock.api.easymock.PowerMock.createMock;
import static org.powermock.api.easymock.PowerMock.mockStatic;
import static org.powermock.api.easymock.PowerMock.replay;
import static org.powermock.api.easymock.PowerMock.verify;
import static org.easymock.EasyMock.expect;
@PrepareForTest( {MyStatic.class})
public class StaticTest extends PowerMockTestCase{
@Test
public void testStaticMethod()
{
mockStatic( MyStatic.class );
expect( MyStatic.getString() ).andReturn( "good" );
replay( MyStatic.class );
MyStatic.getString();
verify(MyStatic.class);
}
}
testng-eclipse プラグインを使用しています。Eclipse 内で正常に動作します。しかし、ant 経由で実行しようとすると、次のようになります。
java.lang.IllegalStateException: no last call on a mock available
at org.easymock.EasyMock.getControlForLastCall(EasyMock.java:520)
at org.easymock.EasyMock.expect(EasyMock.java:498)
コード "expect( MyStatic.getString() ).andReturn( "good" );" で文句を言います。
私のantスクリプトは次のとおりです。
<testng classpathref="test.runtime.classpath" outputDir="${report.absolute.path}/testngreport" workingDir="${test.module.basedir}">
<!--<jvmarg line="-Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=y"/>-->
<classfileset dir="${test.module.testoutput.dir}" includes="**/*.class"/>
</testng>
フィードバックをいただければ幸いです。