java - 单元测试从另一个类调用的方法

标签 java android unit-testing mocking mockito

我是 Android 单元测试的新手,我正在使用 Mockito 进行测试。

我想测试我的方法,它有一个来自另一个类的方法。我想 stub 那个方法,这样它就不会被调用。我正在使用 doReturn().when() 这样就不会调用原始方法,而是调用原始方法。

这是我的代码:

doReturn(true).when(myclass1mock).methodofclass1();
boolean a = myclass1mock.methodofclass1(); //here it return true
class2spy.methodofclass2(anyvalue);

我测试的方法是:

public class2 {
    public void methodofclass2(Value) {
        boolean value = class1.methodofclass1(); //here I don't want to call this method
    }
}

问题是 class1 的方法每次都会被调用。我想要一些东西,这样 class1.methodofclass1() 就不会被调用。

我正在注入(inject):

@Mock
class1 myclass1mock;
@InjectMocks
class2 myclass2;
@Before
public void setUp() {
    myclass2 = new myclass2();
    class2spy = Mockito.spy(myclass2);
}

最佳答案

既然你想测试 Class2 的行为,那么我认为你混淆了注释。此外,我会利用 @Spy 注释而不是手动配置它:

@Spy
class1 myclass1Spy;

@InjectMocks
class2 myclass2;

@Before
public void setUp() {
    MockitoAnnotations.initMocks(this);
}

此外,不要试图不监视正在测试的类(class2)。使用真正的实现。

关于java - 单元测试从另一个类调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43933751/

相关文章:

android - 如何用谷歌地图保存坐标?

android - 在 fragment 过渡时添加进度对话框

unit-testing - 测试未在 Play Framework 2.0 中执行

java - 二叉搜索树 tree.root 返回 null

java - Java 11 中 Java 8 的 JVM 标志的替代方案

java - 使用Java加密/解密pdf文件

c# - 有没有办法告诉 Autofixture 只设置具有特定属性的属性?

java - Scala:从返回 Seq 的函数返回可变缓冲区

java - 打开跟踪文件时出错 : No such file or directory (2) Google Calendar

python - Unitest 用于处理异常的函数