【问题标题】:Using Powermock with TestNG using EasyMock. throws exception使用 EasyMock 将 Powermock 与 TestNG 一起使用。抛出异常
【发布时间】:2013-08-11 01:17:09
【问题描述】:

我正在尝试使用 Powermock 编写 TestNg 测试来模拟静态函数调用。 我的测试代码是:

import static org.easymock.EasyMock.expect;
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 org.powermock.core.classloader.annotations.PrepareForTest;
import org.testng.Assert;
import org.testng.annotations.Test;


@PrepareForTest(TestStringProvider.class)
public class TryPowerMock {

    public void test() {
        String string = TestStringProvider.getString();
        Assert.assertEquals(string, "testString");
    }

    @Test
    public void tryPowerMock() {
        mockStatic(TestStringProvider.class);        
        expect(TestStringProvider.getString()).andReturn("testString");
        replay(TestStringProvider.class);
        test();
        verify(TestStringProvider.class);
    }

}

带静态函数的类:

public class TestStringProvider {
    public static String getString(){
        return "WHY AM I CALLED, I AM SUPPOSED TO BE MOCKED";
    }

}

运行这个测试给了我以下异常,

FAILED: tryPowerMock
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)
    at com.archit.learn.powermock.TryPowerMock.tryPowerMock(TryPowerMock.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

【问题讨论】:

    标签: java unit-testing testng easymock powermock


    【解决方案1】:

    探索了更多,自己找到了解决方案。

    我不得不从 PowerMockTestCase 类扩展我的单元测试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多