当前位置: 首页 > 知识库问答 >
问题:

如何为Android单元测试设置Mockito到mock类

楚灿
2023-03-14
@Test
public void myTest() throws Exception {
    Spanned word = new SpannedString("Bird");
    int length = word.length();
}

引发异常

java.lang.RuntimeException:Android.text.SpannableStringInternal中的方法长度未被模拟。有关详细信息,请参见http://g.co/androidstudio/not-mocked。

这在上面的链接中解释为

我想学习,所以我准备在问答式下面加上我的答案。

共有1个答案

孙震博
2023-03-14

在您的项目中设置Mockito并不难。步骤如下。

假设您使用的是jcenter存储库(Android Studio中的默认存储库),将以下行添加到应用程序的build.gradle文件的dependencies块中:

testImplementation "org.mockito:mockito-core:2.8.47"

您可以将版本号更新为Mockito的最新版本。

dependencies {
    // ...
    testImplementation 'junit:junit:4.12'
    testImplementation "org.mockito:mockito-core:2.8.47"
}
import static org.mockito.Mockito.*;
  1. 使用mock(theclassname.class).
  2. 创建类的mock
  3. 告诉被模仿的类您需要调用的任何方法返回什么。您可以使用whenthenreturn执行此操作。
  4. 在测试中使用模拟方法。

这里有一个例子。真正的测试可能会使用模拟值作为正在测试的任何内容的某种输入。

public class MyTestClass {

    @Test
    public void myTest() throws Exception {
        // 1. create mock
        Spanned word = mock(SpannedString.class);

        // 2. tell the mock how to behave
        when(word.length()).thenReturn(4);

        // 3. use the mock
        assertEquals(4, word.length());
    }
}

还有很多要嘲笑的。请参阅以下参考资料以继续学习。

    null
 类似资料:
  • 我目前正在与CDI Unit合作一个项目,我遇到了一个奇怪的问题。我试图在一个简单的项目中重现它: 我有一个使用CdiRunner运行的测试类(如下所述:http://jglue.org/cdi-unit-user-guide/我的测试类注入了被测试的单元:UUD。这个类扩展了一个超级类“ParentTestClass”,它目前是无用的。 测试课。爪哇: 正如我提到的,父类是空的。 ParentT

  • 问题内容: 我有一些Junit单元测试,需要大量的堆空间才能运行-即1G。(他们测试了一个Webstart应用程序的内存密集型功能,该功能仅在具有足够的堆空间的情况下运行,并且将在Win 7 64位计算机上内部运行-因此,重新设计测试不是一个实际的建议。) 我正在Intellij IDEA中进行开发,因此我知道可以为测试类设置JVM参数(例如-Xmx1024M)。但是,这仅用于运行整个测试类-如果

  • 问题内容: 我正在使用RestTemplate 方法将正文发布到端点。我需要使用Mockito为我的代码编写测试用例的帮助。返回类型为void,但是可以将其更改为,或者需要进行测试。我已经提到了许多其他文档,但是它们非常笼统,我尝试使用它们,但是由于and和return类型是不同的,所以大多数对我来说都不起作用。。任何建议表示赞赏。谢谢 这是我的Java课 问题答案: 您正在测试MyClass类中

  • 如果我们需要自定义本地单元测试配置,可以这样做. 操作步骤: 打开Run\/Debug Configurations对话框 —> 点击左上角的+号 —> Android Tests 然后新增一个Android Tests配置窗口: 1.Name: 输入配置名 2.Module:选择需要测试的模块 3.Test: 指定测试范围 4.指定instrumentation runner 5.指定目标设备.

  • 我在java中使用mockito编写单元测试。 这就是我要测试的声明。 电影是电影名称的集合,是识别电影的关键。 我嘲笑了守望者班 Mockito.when(watcher.watch(Matchers.any(Set.class))) “thenReturn”中包括什么??