Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >存根时出现空指针异常

存根时出现空指针异常
EN

Stack Overflow用户
提问于 2020-11-02 11:07:54
回答 1查看 361关注 0票数 0

下午好,我在存根时有一个空指针异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.micheladrien.android.fresquerappel

import android.app.Application
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.micheladrien.fresquerappel.R
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock    
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock
import org.mockito.junit.MockitoJUnitRunner


@RunWith(MockitoJUnitRunner::class)
class MainViewModelTest {

  @Rule
  @JvmField
  var instantTaskExecutorRule = InstantTaskExecutorRule()    

  @Mock
  val applicationMock: Application = mock(Application::class.java)
 
  @Before
  fun setUpTaskDetailViewModel() {
        `when`(applicationMock.getString(R.string.collage_climat)).thenReturn("Climat")
    }
    }

编辑:我需要存根函数when(applicationMock.getString(R.string.collage_climat)).thenReturn("Climat"),因为我的视图模型将从上下文中获取字符串。

根据这篇博文:https://codepills.com/2018/05/10/3-basic-mistakes-for-nullpointerexception-when-mock/我应该在返回时替换为when then (回答),如果这是真的,为什么?

我已经测试过:将R.id值更改为一个不正确的数字。模拟before中的文件并在@Mock =>中使用=>声明时出现相同的错误

与前面的问题线程Mockito - NullpointerException when stubbing Method不同,我直接截断了这个方法。不截断另一个方法的对象的方法。

任何帮助都将不胜感激。

编辑:我要测试的虚拟机:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MainViewModel(application: Application): AndroidViewModel(application), WaitingViewModel{

    private val _name = MutableLiveData<String>().apply {
        value = application.getString(R.string.collage_climat)
    }

    val name : LiveData<String> = _name

    override fun notifyNewCollage(collage_name: String) {
        _name.value = collage_name
    }

}

如果你想检查Mockito的版本,这里是gradle:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.3'
def navigation_version = '2.3.1'
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "androidx.navigation:navigation-fragment:$navigation_version"
implementation "androidx.navigation:navigation-ui:$navigation_version"
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
implementation 'il.co.theblitz:observablecollections:1.4.2'
def espressocore_version = '3.3.0'
androidTestImplementation "androidx.test.espresso:espresso-core:$espressocore_version"
androidTestImplementation "androidx.test.espresso:espresso-core:$espressocore_version"
androidTestImplementation "android.arch.core:core-testing:$lifecycle_version"
def mockito_version = '3.5.5' // For local unit tests on your development machine (also tested on 3.3.3)
testImplementation "org.mockito:mockito-core:$mockito_version" // For instrumentation tests on Android devices and emulators
androidTestImplementation "org.mockito:mockito-android:$mockito_version"
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-12 09:04:31

Mockito建议不要嘲笑你不拥有的类。因此,应用程序模拟不是一个好主意。Junit可以为您提供所需的应用程序上下文:https://developer.android.com/training/testing/junit-runner

有关存根失败的其他信息,请访问Mockito fails on stubbing : it tries to execute the function that should be stubbed

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

https://stackoverflow.com/questions/64644388

复制
相关文章
springboot+mybatis出现空指针异常时出现的问题及解决方法
今天遇见了一个问题,困扰了一段时间,试了几种方法,但是还是解决不了,主要的精力还是放在了mybatis插入控制时的问题。但是对于空指针异常有多重问题引起。下面来说明一下遇到的问题: 前端传过来的值为{pId: null},后端获取值是使用的是params.get()的方法,直接上代码
kirin
2021/04/01
2.8K0
java空指针报错_空指针异常是什么意思
Java 中任何对象都有可能为空,当我们调用空对象的方法时就会抛出 NullPointerException 空指针异常,这是一种非常常见的错误类型。我们可以使用若干种方法来避免产生这类异常,使得我们的代码更为健壮。本文将列举这些解决方案,包括传统的空值检测、编程规范、以及使用现代 Java 语言引入的各类工具来作为辅助。
全栈程序员站长
2022/11/17
2.2K0
java空指针报错_空指针异常是什么意思
Optional 类解决空指针异常
空指针异常是导致 Java 应用程序失败的最常见原因。以前,为了解决空指针异常,Google 公司著名的 Guava 项目引入了 Optional 类,Guava 通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到 Google Guava 的启发,Optional 类已经成为 Java8 类库的一部分。Optional 实际上是个容器:它可以保存类型 T 的值,或者仅仅保存 null。Optional 提供很多有用的方法,这样我们就不用显式进行空值检测。
BUG弄潮儿
2021/05/17
8120
对Object使用toString方法出现空指针异常java.lang.NullPointerException
在写代码的过程中发现一个很容易出错的小bug,当使用toString方法把对象(Object)转成字符串时,很容易忘了考虑空指针异常:java.lang.NullPointerException。
acoolgiser
2022/09/28
1.3K0
如何有效的避免空指针异常
空指针异常在新手程序员里面非常常见,不只是新手,所有初级、中级甚至是高级都不可避免。
甲蛙全栈
2021/01/22
1.9K0
jdbctemplate查询为空报错_java空指针异常举例
Dao类是不能直接new出来的必须是通过 ApplicationContext applicationContext= new
全栈程序员站长
2022/11/17
3.1K0
Spring @Resource注入报空指针异常
今天在项目中使用@Resource进行依赖注入时给我报了一个空指针异常: 示例代码: @Resource private static DemoService demoService; 解决办法:使用SpringContextHolder获取Bean private static final DemoService DEMO_SERVICE = SpringContextHolder.getBean(DemoService.class);
倾盖
2022/08/16
1.8K0
Spring @Resource注入报空指针异常
使用Optional优雅避免空指针异常
在编程世界中,「空指针异常(NullPointerException)」无疑是我们最常遇到的"罪魁祸首"之一。它像一片隐蔽的地雷,静静地等待着我们不小心地踏入,给我们的代码带来潜在的威胁。这种问题虽然看似微小,但却无法忽视。甚至可能对整个程序的稳定性产生重大影响。
BookSea
2023/09/26
2830
使用Optional优雅避免空指针异常
空指针异常--java.lang.NullPointerException
苦于没有素材的时候,路上突然想起来同事说今天遇到好多调用方法走不下去,全都是空指针异常,刚写代码或者代码篇幅过多的时候,总会忘记防止空指针异常,那么就此总结下关于空指针异常,及解决方案。
疯狂的KK
2019/10/10
2.3K0
空指针异常--java.lang.NullPointerException
Mybatis selectOne查询空指针异常NullPointerException
上述代码在进行查询的时候如果没有查询到任何值,那么selectOne会返回null,并把null赋值给user对象。这样赋值的时候是不会报错的也不会有任何异常,但是当一个对象为null的时候,是不可以调用其get方法的,会出现空指针异常:
崔笑颜
2020/06/08
3.5K0
Android TextView 中 setText 的空指针异常
第一次发现这问题,记录一下,在适配器里面给TextView设置一个int类型的值,然后闪退报错,DeBug模式下查看了布局和id,均没有问题,再次查看日志输出,Caused By: android.content.res.Resources$NotFoundException:String resource ID #0x86,发现有两个词引起了注意String Resources,才知道TextView在内部实现时设置的类型为String,所以用String.valueOf(),这里再啰嗦几句,在String类型的转化问题上,String.valueOf()效率最高,因为虚拟机对它进行了特殊处理,其次是toString,最后是+""的拼接形式,拼接String的形式内部实现其实就是toString,但是要相对复杂一些,拼接过程中产生了常量和一些判断条件,效率低下,详情见源码
萬物並作吾以觀復
2018/09/13
1.7K0
Collectors.toMap 当value为空时,报空指针
import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors;
botkenni
2022/11/12
3.1K0
Collectors.toMap 当value为空时,报空指针
Java - foreach循环报NPE空指针异常
最近debug时忽然发现,如果一个集合赋值为null,那么对该集合进行foreach循环(也叫增强for循环)时,会报NPE(即空指针异常NullPointerException)。
雨临Lewis
2022/01/11
2K0
java 避免出现NullPointerException(空指针)的方法总结
Java应用中抛出的空指针异常是解决空指针的最好方式,也是写出能顺利工作的健壮程序的关键。俗话说“预防胜于治疗”,对于这么令人讨厌的空指针异常,这句话也是成立的。值得庆幸的是运用一些防御性的编码技巧,跟踪应用中多个部分之间的联系,你可以将Java中的空指针异常控制在一个很好的水平上。顺便说一句,这是Javarevisited上的第二个空指针异常的帖子。在上个帖子中我们讨论了Java中导致空指针异常的常见原因,而在本教程中我们将会学习一些Java的编程技巧和最佳实践。这些技巧可以帮助你避免Java中的空指针异常。遵从这些技巧同样可以减少Java代码中到处都有的非空检查的数量。作为一个有经验的Java程序员,你可能已经知道其中的一部分技巧并且应用在你的项目中。但对于新手和中级开发人员来说,这将是很值得学习的。顺便说一句,如果你知道其它的避免空指针异常和减少空指针检查的Java技巧,请和我们分享。
林老师带你学编程
2019/05/25
3.3K0
Java 的 Optional.ofNullable()方法,防止空指针异常
从数据库查询多个数据,返回list ,我们需要在代码里面判空, 之前是if 进行判断; 查询返回空,如果没有判空处理,一不小心就会空指针异常。加上if判断处理也可以,但是jdk1.8有更优雅的处理方式。
一写代码就开心
2023/01/13
1K0
空类型指针
malloc 查看底层源码中发现是空类型的指针,空类型的指针可以接收任意类型的指针,但是不能取出指针里的内容,如果要取出内容必须要强转。
潇洒
2019/07/02
8050
还只会 null != obj 判空,10招让你彻底告别空指针异常!
NPE异常相信 Java 程序员都很熟悉,是 NullPointerException 的缩写;最近业务需求开发的有点着急,测试环境就时不时的来个NPE异常,特别的头疼;作为出镜率最高的异常之一,一旦入行 Java 开发,可以说它将伴随着你整个职业生涯;不管是新手小白、还是老司机,对NPE异常那是又“爱”又狠,爱的主要原因是处理起来简单,恨当然是一个不小心就会踩坑;为了提高代码的质量,NPE异常是必须要消灭掉的;
一行Java
2023/09/04
9540
还只会 null != obj 判空,10招让你彻底告别空指针异常!
Java自动拆箱空指针异常,救火队员上线
公司搬迁,临时充当装修工,提前两个小时到公司忙着拆卸设备。结果接到客户反映,某部分功能偶尔不能用。于是参与救火,与写这段代码的小伙伴一起排查原因。
程序新视界
2021/03/20
1.5K0
空指针,野指针,万能指针
空指针指向地址编号为0的地址,不可以访问空指针指向的内容,因为内存地址编号0~255之间被系统占用,不可以访问 但是可以printf("%d",p);,输出p指向的地址
大忽悠爱学习
2021/03/02
1.4K0
C/CPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针
普通变量可以不赋初值,但是指针变量的初值必须万分慎重,因为未来的*操纵会以这个初值为目标内存地址,往里面读写数据(可以才C primer plus中看到相应分析)
CtrlX
2023/03/21
1.7K0
C/CPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针

相似问题

处理时出现空指针异常

10

jdbctemplate时出现空指针异常

22

ServiceStop时出现空指针异常

111

swipe时出现空指针异常

10

getReadableDatabase时出现空指针异常

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文