国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

單元測(cè)試-java.lang.NullPointerException

這篇具有很好參考價(jià)值的文章主要介紹了單元測(cè)試-java.lang.NullPointerException。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

報(bào)錯(cuò)信息

java.lang.NullPointerException
空指針異常
空對(duì)象引用

來(lái)源

對(duì)Controller層進(jìn)行單元測(cè)試,解決完Spring上下文報(bào)錯(cuò)后繼續(xù)報(bào)錯(cuò)。

解決

在測(cè)試方法執(zhí)行前要為字段完成對(duì)象的注入,否則就報(bào)空指針異常。
單元測(cè)試 出現(xiàn) 空指針,報(bào)錯(cuò),單元測(cè)試,java,log4j

測(cè)試?yán)?/h4>

不完整啟動(dòng)Spring框架
public class SysUserControllerTest {

    @InjectMocks// 在單元測(cè)試中沒(méi)有啟動(dòng)Spring框架時(shí),通過(guò)@InjectMocks完成依賴(lài)注入
    private SysUserController sysUserController;

    @Mock// 創(chuàng)建模擬對(duì)象
    private SysUserService sysUserService;

    @BeforeEach// JUnit5 棄用Before,每個(gè)測(cè)試方法執(zhí)行之前初始化測(cè)試環(huán)境
    public void setUp() {
        MockitoAnnotations.openMocks(this);// 初始化被@Mock、@Spy、@Captor 和 @InjectMocks 注解的字段
    }

    @Test
    public void testSelectOne() throws Exception {
        // 準(zhǔn)備測(cè)試數(shù)據(jù)
        Serializable id = 1;
        SysUser sysUser = new SysUser();
        sysUser.setId(1L);
        sysUser.setUserName("admain");
        // 設(shè)置mock對(duì)象行為
        // 設(shè)置sysUserService的 getById 方法的返回值為 sysUser
        when(sysUserService.getById(id)).thenReturn(sysUser);
        // 調(diào)用被測(cè)試的方法
        // 調(diào)用 sysUserController 的 selectOne 方法,并傳入 id 參數(shù)
        ResponseResult<SysUser> responseResult = sysUserController.selectOne(id);
        // 如果 responseResult 的 Code 字段等于 200
//        if (responseResult.getCode() == 200) {
//            // 打印 responseResult 的 JSON 字符串形式
//            System.out.println(JSON.toJSONString(responseResult));
//        }
        // 斷言驗(yàn)證結(jié)果
        assert (responseResult.getData().getUserName().equals(sysUser.getUserName()));
    }
}
完整啟動(dòng)Spring框架

避免手動(dòng)注入字段。
注意:完整啟動(dòng)的話->Mockito測(cè)試框架中來(lái)模擬一個(gè)對(duì)象的行為會(huì)失效(when()失效)。
通常不這樣測(cè)試,如果需要在單元測(cè)試中模擬Spring Boot應(yīng)用程序的某些功能,可以考慮使用@SpringBootTest文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-771389.html

@SpringBootTest
public class SysUserControllerTest {
    @Autowired// @SpringBootTest完整啟動(dòng)Spring框架時(shí),通過(guò)@Autowired完成依賴(lài)注入
    private SysUserController sysUserController;

    @Mock// 創(chuàng)建模擬對(duì)象
    private SysUserService sysUserService;

    @Test
    public void testSelectOne() throws Exception {
        // 準(zhǔn)備測(cè)試數(shù)據(jù)
        Serializable id = 1;
        SysUser sysUser = new SysUser();
        sysUser.setId(1L);
        sysUser.setUserName("admain");
        // 設(shè)置mock對(duì)象行為
        // 設(shè)置sysUserService的 getById 方法的返回值為 sysUser
        when(sysUserService.getById(id)).thenReturn(sysUser);
        // 調(diào)用被測(cè)試的方法
        // 調(diào)用 sysUserController 的 selectOne 方法,并傳入 id 參數(shù)
        ResponseResult<SysUser> responseResult = sysUserController.selectOne(id);
        // 如果 responseResult 的 Code 字段等于 200
//        if (responseResult.getCode() == 200) {
//            // 打印 responseResult 的 JSON 字符串形式
//            System.out.println(JSON.toJSONString(responseResult));
//        }
        // 斷言驗(yàn)證結(jié)果
        assert (responseResult.getData().getId().equals(sysUser.getId()));
    }
}

到了這里,關(guān)于單元測(cè)試-java.lang.NullPointerException的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 出現(xiàn)java.lang.NullPointerException的可能原因及解決方案

    出現(xiàn) java.lang.NullPointerException 錯(cuò)誤通常是因?yàn)榇a中出現(xiàn)了一個(gè)空引用,即 null。當(dāng)嘗試對(duì)這個(gè)空引用進(jìn)行操作時(shí),就會(huì)出現(xiàn) NullPointerException 錯(cuò)誤。以下是可能導(dǎo)致該錯(cuò)誤的幾個(gè)原因: 對(duì)象未被正確初始化 :當(dāng)對(duì)象未被正確初始化時(shí),它的值將為 null。在嘗試訪問(wèn)該對(duì)象的方

    2024年02月01日
    瀏覽(57)
  • 出現(xiàn)Caused by: java.lang.NullPointerException異常的解決方法

    出現(xiàn)Caused by: java.lang.NullPointerException異常的解決方法

    拿到老師的項(xiàng)目,項(xiàng)目啟動(dòng)時(shí)正常,網(wǎng)頁(yè)提交數(shù)據(jù)時(shí)出現(xiàn)Caused by: 報(bào)錯(cuò), 上一條日志顯示 是連接mysql的時(shí)候出現(xiàn)bug導(dǎo)致的, 查了一下是數(shù)據(jù)庫(kù)版本不匹配問(wèn)題, 于是我看了一下自己電腦的mysql版本 哇哦,是mysql8.0,再看一下依賴(lài)?yán)锏膍ysql版本 是mysql5.1.32,這倆版本不匹配,

    2024年02月11日
    瀏覽(114)
  • 空指針異常:java.lang.NullPointerException: Cannot invoke “Object.getClass()“ because “obj“ is null

    空指針異常:java.lang.NullPointerException: Cannot invoke “Object.getClass()“ because “obj“ is null

    目錄 問(wèn)題: 問(wèn)題指向:? ?解決: 運(yùn)行正常: java.lang.NullPointerException: Cannot invoke \\\"Object.getClass()\\\" because \\\"obj\\\" is null ?? ?at java.base/java.lang.reflect.Method.invoke(Method.java:570) ?? ?at org.myspringframework.core.ClassPathXmlApplicationContext.lambda$new$0(ClassPathXmlApplicationContext.java:172) ?? ?at java.bas

    2024年02月07日
    瀏覽(26)
  • java后端用mockito做單元測(cè)試,一直報(bào)錯(cuò)空指針問(wèn)題【已解決】

    java后端用mockito做單元測(cè)試,一直報(bào)錯(cuò)空指針問(wèn)題【已解決】

    寫(xiě)java后端,用mockito做單元測(cè)試 跑測(cè)試代碼的時(shí)候,一直報(bào)空指針錯(cuò): 測(cè)試代碼如下: debug發(fā)現(xiàn) ruleService 和 mockRuleMapper 為空: 一開(kāi)始以為是測(cè)試代碼哪寫(xiě)錯(cuò)了,作為一個(gè)后端小白,在網(wǎng)上搜索相關(guān)bug解決辦法,乃至詢問(wèn)身邊寫(xiě)過(guò)測(cè)試的人,前前后后弄了好幾個(gè)小時(shí),還是一

    2024年02月12日
    瀏覽(34)
  • 單元測(cè)試報(bào)錯(cuò)解決java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/ReflectionUtil

    單元測(cè)試報(bào)錯(cuò)解決java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/ReflectionUtil

    原因是新版本的log4j-core包中不包含org/apache/logging/log4j/util/ReflectionUtil這個(gè)類(lèi),在2.2版本后這個(gè)類(lèi)被遷移到log4j-jcl包中。 引入新的包即可 maven引入 gradle引入 即可解決

    2024年02月16日
    瀏覽(33)
  • [已解決]前端使用el-upload,后端使用文件上傳阿里云報(bào)錯(cuò):異常信息:java.lang.NullPointerException: null

    [已解決]前端使用el-upload,后端使用文件上傳阿里云報(bào)錯(cuò):異常信息:java.lang.NullPointerException: null

    前端使用el-upload,后端使用文件上傳阿里云報(bào)錯(cuò): 報(bào)錯(cuò)原因:前端image參數(shù)未傳進(jìn)去 解決方法:在el-upload添加屬性 name=\\\"image\\\" 文件傳進(jìn)去了!

    2024年01月20日
    瀏覽(95)
  • 解決Gradle在IDEA中運(yùn)行Java17的Junit單元測(cè)試程序報(bào)錯(cuò):module java.base does not “opens java.lang“ to unnamed module

    gradle在IDEA中使用了JDK17運(yùn)行springboot3.x等程序的時(shí)候使用了反射或ASM等會(huì)報(bào)錯(cuò):module java.base does not “opens java.lang” to unnamed module,可以通過(guò)在IDEA中設(shè)置JVM參數(shù)解決此問(wèn)題: 對(duì)于單元測(cè)試程序,設(shè)置了此參數(shù)無(wú)效,只能通過(guò)修改gradle.build腳本解決此問(wèn)題,在gradle.build中添加如

    2024年02月16日
    瀏覽(93)
  • java.lang.RuntimeException: java.lang.NullPointerException

    java.lang.RuntimeException: java.lang.NullPointerException

    空指針異常 一般導(dǎo)致空指針異常的是 1.對(duì)象未初始化:當(dāng)一個(gè)對(duì)象被聲明但未被實(shí)例化,或者被賦值為null時(shí),嘗試調(diào)用該對(duì)象的方法或訪問(wèn)其屬性都會(huì)導(dǎo)致空指針異常 例如: 2.方法返回null:如果一個(gè)方法返回null,而調(diào)用者沒(méi)有檢查返回值是否為null,直接對(duì)返回值進(jìn)行操作就

    2024年02月02日
    瀏覽(30)
  • java.lang.NullPointerException: null

    java.lang.NullPointerException: null

    錯(cuò)誤提示的大意是:空指針異常。說(shuō)明報(bào)錯(cuò)位置缺少信息或者是數(shù)據(jù)對(duì)應(yīng)不上。 知道大概意思后現(xiàn)在開(kāi)始排查,點(diǎn)擊 Debug ,就是下圖的這個(gè)按鈕 ?然后根據(jù)前面提示的報(bào)錯(cuò)行,再打開(kāi)項(xiàng)目運(yùn)行。 ?接著看報(bào)錯(cuò)信息,它說(shuō)這個(gè)類(lèi)型等于null,但是查看該頁(yè)面,發(fā)現(xiàn)上述頁(yè)面沒(méi)有

    2024年02月15日
    瀏覽(17)
  • 解決java.lang.NullPointerException異常的方法

    解決java.lang.NullPointerException異常的方法 java.lang.NullPointerException異常 ava.lang.NullPointerException(NPE)是Java中最常見(jiàn)的運(yùn)行時(shí)異常之一,通常發(fā)生在應(yīng)用程序試圖在需要對(duì)象的地方使用null。要解決這個(gè)問(wèn)題,你需要確保在引用對(duì)象之前,該對(duì)象已經(jīng)被正確初始化。 下滑查看解決方

    2024年04月25日
    瀏覽(50)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包