相关疑难解决方法(0)

当我们无法将模拟对象传递给类的实例时,如何使用Mockito

假设我有一个这样的类:

public class MyClass {

    Dao dao;

    public String myMethod(Dao d) {

        dao = d;

        String result = dao.query();

        return result;
    } 
}
Run Code Online (Sandbox Code Playgroud)

我想用mockito测试它.所以我创建了一个模拟对象,并以这种方式调用方法进行测试:

Dao mock = Mockito.mock(Dao.class);

Mockito.when(mock.myMethod()).thenReturn("ok");

new MyClass().myMethod(mock);
Run Code Online (Sandbox Code Playgroud)

但是,假设我有一个这样的类:

public class MyClass {

    Dao dao = new Dao();

    public String myMethod() {

        String result = dao.query();

        return result;
    } 
}
Run Code Online (Sandbox Code Playgroud)

现在我不能把我的模拟作为一个论点,所以我将如何测试我的方法?有人可以举个例子吗?

java mockito

6
推荐指数
2
解决办法
8059
查看次数

运行时错误PowerMock + Mockito:ProxyFrameworkImpl无法位于类路径中

我正在尝试将PowerMock与Android InstrumentTestCase一起使用由于我的测试在Android设备上运行,因此需要将库添加到apk中.

我遇到了powermock + mockito和Dex文件的大问题.我的依赖项中只有powermock + mockito的运行时错误:

org.powermock.api.extension.proxyframework.ProxyFrameworkImpl could not be located in classpath.
Run Code Online (Sandbox Code Playgroud)

如果我包含cglib/cglib-nodep(在答案中建议),则会出现编译错误:

com.android.dex.DexException: Multiple dex files define Lnet/sf/cglib/beans/BeanCopier$BeanCopierKey
Run Code Online (Sandbox Code Playgroud)

这是我的gradle.build的一部分:

androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'org.powermock:powermock-api-mockito:1.6.4'
androidTestCompile 'org.powermock:powermock-module-junit4:1.6.4'
androidTestCompile 'cglib:cglib-nodep:3.2.0'
androidTestCompile 'cglib:cglib:3.2.0'
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

提前致谢!

java android mockito powermock gradle

5
推荐指数
1
解决办法
1351
查看次数

标签 统计

java ×2

mockito ×2

android ×1

gradle ×1

powermock ×1