首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到PowerMock类

找不到PowerMock类
EN

Stack Overflow用户
提问于 2013-09-20 17:24:23
回答 2查看 19.5K关注 0票数 5

由于某些原因,我没有遵循一个非常简单的PowerMock示例。

我在类路径中包含了powermock-mockito-1.5.1-full,并尝试测试一个公共的最终方法(遵循this示例)。

由于某些原因,我无法导入到PowerMock类。

代码语言:javascript
复制
import org.junit.*;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.cleancode.lifesaver.camera.*;

@RunWith(PowerMockRunner.class)
@PrepareForTest(android.hardware.Camera.class)
public class CameraTests {

    private android.hardware.Camera _cameraMock;

    @Before
    public void setUp() {
        _cameraMock = PowerMockito.mock(android.hardware.Camera.class);
    }

    @Test 
    public void releaseCamera() {
        ICamera camera = new Camera(_cameraMock);

        // Compile error: PowerMock can't be resolved       
        PowerMock.replay(_cameraMock);
        // I also tried PowerMockito.replay(_cameraMock) but that also doesn't exist.

        camera.release();

        Mockito.verify(_cameraMock).release();
    }
}

正如注释所解释的那样,PowerMock类不能从power mock jar中导入。

这感觉像是一个愚蠢的问题,但我真的在网上找不到任何东西。

在哪里可以找到静态类PowerMock?我还使用了Java反编译来搜索powermock库,但没有找到powermock / replay。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-20 17:39:39

您正在遵循的示例PowerMock.replay(_cameraMock);使用的是EasyMock,而您似乎希望使用Mockito。看看this tutorial中的mockito & power mock

票数 7
EN

Stack Overflow用户

发布于 2013-09-20 17:54:27

我建议你不要在你的setUp() (之前)方法中创建你的模拟,因为模拟是非常复杂的,例如,你可以准确地告诉它一个方法应该被调用多少次,如果你为所有的测试声明一个“通用”模拟,那么很难控制这种行为。

也许(没有代码,我只能猜测)您希望在Camera.release()方法中调用android.hardware.Camera,对吗?所以我应该这样做:

您试图模拟的方法不是静态的,它是一个普通的final方法。您可以尝试这样做:

代码语言:javascript
复制
android.hardware.Camera mock = PowerMock.createMock(android.hardware.Camera.class);
PowerMock.expect(mock.release());
PowerMock.replay();

ICamera camera = new Camera(mock);
camera.release();
PowerMock.verify(mock);

如果在android.hardware.Camera.release()方法中没有准确调用内部camera.relase(),则测试失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18913204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档