開發者社區測試報告(功能測試+性能測試)

功能測試

測試相關用例

開發者社區功能背景

在當今數字化時代,編程已經成為一項核心技能,越來越多的人開始學習編程,以適應快速變化的科技 環境。基于這一需求,我設計開發了一個類似博客的論壇系統,專注于方便程序員與學習編程者之間的交流和 學習,旨在創建一個開放、友好且充滿活力的社區。

測試用例思維導圖

測試頁面

以下是要測試的頁面:

頁面排版渲染與需求一致,同時按鈕能夠進行正確點擊

登錄頁面

注冊頁面

主界面

用戶個人信息

帖子詳情

短信頁面

測試用例

設置了部分基礎的測試用例,盡可能的全覆蓋,這里只展示部分用例(篇幅有限)

登錄界面

  • 正確輸入用戶名和密碼

  • 輸入密碼為空

注冊頁面

  • 正確注冊

  • 用戶名為空

  • 用戶已存在

  • 密碼為空

個人頁面

  • 郵箱修改失敗

  • 電話號碼失敗

  • 密碼修改失敗

帖子頁面

  • 創建帖子失敗

  • 回復帖子失敗

站內信頁面

回復失敗

代碼編寫

基礎配置

先進行驅動配置以及截圖配置

public class InitUtils {public static WebDriver webDriver ;public static WebDriver createDriver(){if(webDriver==null){System.setProperty("webdriver.chrome.driver", "C:\\學習使我快樂\\測試\\demo\\chromedriver-win64\\chromedriver.exe");ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");webDriver=new ChromeDriver(options);webDriver.manage().timeouts().implicitlyWait(Duration.ofMillis(5));}return webDriver;}public InitUtils(String url){webDriver = createDriver();webDriver.get(url);}//截圖public static void getImage(String str) throws IOException {SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sim2 = new SimpleDateFormat("HH_mm_ss_SSS");String dirTime = sim1.format(System.currentTimeMillis());String pngTime = sim2.format(System.currentTimeMillis());//名字String fileName = "./src/test/image/"+dirTime+"/"+str+"_"+pngTime+".png";File file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(file,new File(fileName));}
}

登錄頁面

public class LoginPageTest extends InitUtils {public static String url = "http://127.0.0.1:58080/sign-in.html";public LoginPageTest() {super(url);}//登錄成功public void LoginSuc() throws InterruptedException, IOException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();//先找到輸入框,輸入正確的用戶名和密碼getImage(str);//用方法名進行命名Thread.sleep(2000);webDriver.findElement(By.cssSelector("#username")).sendKeys("小明");webDriver.findElement(By.cssSelector("#password")).sendKeys("123123");webDriver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);getImage(str);//webDriver.quit();}//退出登錄public void logout() throws IOException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();getImage(str);webDriver.findElement(By.cssSelector("#index_nav_avatar")).click();getImage(str);webDriver.findElement(By.cssSelector("#index_user_logout")).click();getImage(str);//webDriver.quit();}//登錄失敗public void LoginFail() throws IOException, InterruptedException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();//先找到輸入框,輸入錯誤的用戶名和密碼getImage(str);
//        webDriver.findElement(By.cssSelector("#username")).sendKeys("小明");
//        webDriver.findElement(By.cssSelector("#password")).sendKeys("123456111");webDriver.findElement(By.cssSelector("#username")).sendKeys("");webDriver.findElement(By.cssSelector("#password")).sendKeys("");webDriver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);getImage(str);//webDriver.quit();}
}

注冊頁面

public class RegisterTest extends InitUtils {public static String url = "http://127.0.0.1:58080/sign-up.html";public RegisterTest() {super(url);}//注冊成功public void registerSuc() throws IOException, InterruptedException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();getImage(str);Thread.sleep(2000);webDriver.findElement(By.cssSelector("#username")).sendKeys("小喜");webDriver.findElement(By.cssSelector("#nickname")).sendKeys("happiness");webDriver.findElement(By.cssSelector("#password")).sendKeys("123456");webDriver.findElement(By.cssSelector("#passwordRepeat")).sendKeys("123456");webDriver.findElement(By.cssSelector("#policy")).click();Thread.sleep(2000);getImage(str);webDriver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);getImage(str);//webDriver.quit();}//注冊失敗public void fail() throws IOException, InterruptedException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();getImage(str);//webDriver.findElement(By.cssSelector("#username")).sendKeys("");//用戶名為空//webDriver.findElement(By.cssSelector("#username")).sendKeys("小明");//用戶名重復webDriver.findElement(By.cssSelector("#username")).sendKeys("明明");webDriver.findElement(By.cssSelector("#nickname")).sendKeys("mingming");//webDriver.findElement(By.cssSelector("#password")).sendKeys("");//密碼為空//webDriver.findElement(By.cssSelector("#password")).sendKeys("123");//密碼小于6位webDriver.findElement(By.cssSelector("#password")).sendKeys("123456");//webDriver.findElement(By.cssSelector("#passwordRepeat")).sendKeys("123");//兩次密碼輸入不一樣webDriver.findElement(By.cssSelector("#passwordRepeat")).sendKeys("123456");//不點擊同意信息//webDriver.findElement(By.cssSelector("#policy")).click();Thread.sleep(2000);getImage(str);webDriver.findElement(By.cssSelector("#submit")).click();Thread.sleep(2000);getImage(str);}
}

帖子頁面

public class ListPageTest extends InitUtils {public static String url = "http://127.0.0.1:58080/index.html";public ListPageTest() {super(url);}//點擊帖子public void listDetail() throws IOException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();getImage(str);webDriver.findElement(By.cssSelector("#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong")).click();//因為是外部的文件 MD輸入,所以一般是找不到的webDriver.findElement(By.cssSelector("#article_details_reply > div.CodeMirror.cm-s-default.CodeMirror-wrap.CodeMirror-empty > div.CodeMirror-scroll")).sendKeys("這是自動化測試內容");getImage(str);webDriver.findElement(By.cssSelector("#details_btn_article_reply")).click();getImage(str);//webDriver.quit();}//點擊板塊public void listBoard() throws IOException, InterruptedException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();getImage(str);webDriver.findElement(By.cssSelector("#topBoardList > li:nth-child(5) > a > span.nav-link-title")).click();Thread.sleep(2000);getImage(str);webDriver.findElement(By.cssSelector("#topBoardList > li:nth-child(8) > a > span.nav-link-title")).click();Thread.sleep(2000);getImage(str);webDriver.quit();}//發布新帖子public void createNewText() throws IOException, InterruptedException{String str = Thread.currentThread().getStackTrace()[1].getMethodName();webDriver.findElement(By.cssSelector("#bit-forum-content > div.page-header.d-print-none > div > div > div.col-auto.ms-auto.d-print-none > div > a.btn.btn-primary.d-none.d-sm-inline-block.article_post")).click();getImage(str);webDriver.findElement(By.cssSelector("#article_post_borad > option:nth-child(6)")).click();//選擇板塊webDriver.findElement(By.cssSelector("#article_post_title")).sendKeys("自動化測試");Thread.sleep(2000);webDriver.findElement(By.cssSelector("#edit-article > div.CodeMirror.cm-s-default.CodeMirror-wrap.CodeMirror-empty > div.CodeMirror-scroll")).sendKeys("自動化測試內容");Thread.sleep(2000);getImage(str);webDriver.findElement(By.cssSelector("#article_post_submit")).click();Thread.sleep(2000);getImage(str);webDriver.quit();}
}

用戶頁面

public class UserTest extends InitUtils {//用戶有兩個頁面,所以需要進行跳轉public static String url="http://127.0.0.1:58080/index.html";public UserTest() {super(url);}//獲取當前用戶帖子public void myText() throws InterruptedException, IOException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();getImage(str);Thread.sleep(2000);webDriver.findElement(By.cssSelector("#index_nav_avatar")).click();webDriver.findElement(By.cssSelector("#index_user_profile")).click();Thread.sleep(2000);getImage(str);//點擊帖子webDriver.findElement(By.cssSelector("#profile_article_body > li > div.card.timeline-event-card > div > div > div > div > div.text-truncate > a > strong")).click();getImage(str);webDriver.quit();}//修改個人信息成功public void updateInfoSuc() throws IOException, InterruptedException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();getImage(str);Thread.sleep(2000);webDriver.findElement(By.cssSelector("#index_nav_avatar")).click();webDriver.findElement(By.cssSelector("#index_user_settings")).click();Thread.sleep(2000);//修改個人信息//修改之前要先清空//修改頭像webDriver.findElement(By.cssSelector("#bit-forum-content > div.page-body > div > div > div > div.col.d-flex.flex-column > div > div.row.align-items-center > div:nth-child(2) > a")).sendKeys("C:\\Users\\asus\\Desktop\\證件照壓縮版.jpg");//修改昵稱
//        webDriver.findElement(By.cssSelector("#setting_input_nickname")).clear();
//        webDriver.findElement(By.cssSelector("#setting_input_nickname")).sendKeys("NickName");
//        Thread.sleep(2000);
//        webDriver.findElement(By.cssSelector("#setting_submit_nickname")).click();
//
//        //修改郵箱
//        webDriver.findElement(By.cssSelector("#setting_input_email")).clear();
//        webDriver.findElement(By.cssSelector("#setting_input_email")).sendKeys("qweqwe123@qq.com");
//        Thread.sleep(2000);
//        webDriver.findElement(By.cssSelector("#setting_submit_email")).click();
//
//        //修改電話號碼
//        webDriver.findElement(By.cssSelector("#setting_input_phoneNum")).clear();
//        webDriver.findElement(By.cssSelector("#setting_input_phoneNum")).sendKeys("15136698733");
//        Thread.sleep(2000);
//        webDriver.findElement(By.cssSelector("#setting_submit_phoneNum")).click();
//
//        //修改密碼
//        webDriver.findElement(By.cssSelector("#settings_input_oldPassword")).sendKeys("123123");
//        webDriver.findElement(By.cssSelector("#settings_input_newPassword")).sendKeys("1123456");
//        webDriver.findElement(By.cssSelector("#settings_input_passwordRepeat")).sendKeys("123456");
//        webDriver.findElement(By.cssSelector("#settings_submit_password")).click();
//
//        //修改個人簡介
//        webDriver.findElement(By.cssSelector("#settings_textarea_remark")).clear();
//        webDriver.findElement(By.cssSelector("#settings_textarea_remark")).sendKeys("這是自動化測試");
//        Thread.sleep(2000);
//        webDriver.findElement(By.cssSelector("#settings_submit_remark")).click();Thread.sleep(2000);getImage(str);Thread.sleep(2000);webDriver.quit();}//修改個人信息失敗public void updateInfoFail()throws IOException, InterruptedException{String str = Thread.currentThread().getStackTrace()[1].getMethodName();getImage(str);Thread.sleep(2000);webDriver.findElement(By.cssSelector("#index_nav_avatar")).click();webDriver.findElement(By.cssSelector("#index_user_settings")).click();Thread.sleep(2000);//修改個人信息//修改郵箱
//        webDriver.findElement(By.cssSelector("#setting_input_email")).clear();
//        webDriver.findElement(By.cssSelector("#setting_input_email")).sendKeys("qweqwe123");
//        Thread.sleep(2000);
//        webDriver.findElement(By.cssSelector("#setting_submit_email")).click();
//        getImage(str);//        //修改電話號碼
//        webDriver.findElement(By.cssSelector("#setting_input_phoneNum")).clear();
//        webDriver.findElement(By.cssSelector("#setting_input_phoneNum")).sendKeys("15136698");
//        Thread.sleep(2000);
//        webDriver.findElement(By.cssSelector("#setting_submit_phoneNum")).click();
//        getImage(str);//修改密碼
//        webDriver.findElement(By.cssSelector("#settings_input_oldPassword")).sendKeys("123123");
//        webDriver.findElement(By.cssSelector("#settings_input_newPassword")).sendKeys("1123456");//前后密碼不一致
//        webDriver.findElement(By.cssSelector("#settings_input_passwordRepeat")).sendKeys("123456");
//        webDriver.findElement(By.cssSelector("#settings_input_oldPassword")).sendKeys("");//沒有輸入舊密碼
//        webDriver.findElement(By.cssSelector("#settings_input_newPassword")).sendKeys("123456");
//        webDriver.findElement(By.cssSelector("#settings_input_passwordRepeat")).sendKeys("123456");webDriver.findElement(By.cssSelector("#settings_input_oldPassword")).sendKeys("123123");webDriver.findElement(By.cssSelector("#settings_input_newPassword")).sendKeys("123456");webDriver.findElement(By.cssSelector("#settings_input_passwordRepeat")).sendKeys("");//沒有輸入確認密碼Thread.sleep(2000);webDriver.findElement(By.cssSelector("#settings_submit_password")).click();Thread.sleep(1000);getImage(str);webDriver.quit();}
}

短信頁面

public class MessageTest extends InitUtils {public static String url = "http://127.0.0.1:58080/index.html";public MessageTest() {super(url);}//打開站內信板塊,點擊站內信public void getMessage() throws InterruptedException, IOException {String str = Thread.currentThread().getStackTrace()[1].getMethodName();webDriver.findElement(By.cssSelector("body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > div > div:nth-child(2) > div > a > svg")).click();Thread.sleep(2000);getImage(str);webDriver.findElement(By.cssSelector("#index_div_message_list > div:nth-child(1) > div > div.col.text-truncate > a > span:nth-child(2)")).click();Thread.sleep(2000);getImage(str);//webDriver.quit();}//回復站內信public void responseMsg()throws InterruptedException, IOException{String str = Thread.currentThread().getStackTrace()[1].getMethodName();webDriver.findElement(By.cssSelector("#btn_index_message_reply")).click();Thread.sleep(2000);getImage(str);webDriver.findElement(By.cssSelector("#index_message_reply_receive_content")).sendKeys("用來測試一下");Thread.sleep(2000);getImage(str);webDriver.findElement(By.cssSelector("#btn_index_send_message_reply")).click();Thread.sleep(2000);getImage(str);webDriver.quit();}
}

性能測試

對部分接口進行了性能測試,設置了600個線程

總結

  • 總體性能

    • 總請求數為6000,所有請求均成功執行,錯誤率為0.00%。

    • 平均響應時間為5.20毫秒,最小響應時間為0毫秒,最大響應時間為133毫秒。

    • 網絡吞吐量為512.30 KiB/s,接收數據量為4521.95 KiB,發送數據量為113.35 KiB。

  • 各請求類型的性能

    • 發起帖子:平均響應時間為10.06毫秒,最大響應時間為32毫秒。

    • 點贊帖子:平均響應時間為5.10毫秒,最大響應時間為13毫秒。

    • 登出:平均響應時間為1.06毫秒,是所有請求中最快的。

    • 登錄:平均響應時間為2.83毫秒,最大響應時間為36毫秒。

    • 獲取帖子內容:平均響應時間為32.46毫秒,是所有請求中最慢的,最大響應時間為63毫秒。

    • 獲取帖子詳情:平均響應時間為5.24毫秒,最大響應時間為31毫秒。

    • 獲取板塊:平均響應時間為2.47毫秒,最大響應時間為8毫秒。

    • 獲取用戶帖子:平均響應時間為16.25毫秒,最大響應時間為44毫秒。

    • 獲取用戶詳情:平均響應時間為1.17毫秒,最大響應時間為6毫秒。

    • 獲取短信內容獲取站內信列表:平均響應時間均為4.44毫秒,最大響應時間為133毫秒。

    • 獲取站內:平均響應時間為3.39毫秒,最大響應時間為14毫秒。

  • APDEX指數

    • 所有請求的APDEX指數均為1.000,表示所有請求的響應時間都在用戶可接受的范圍內(容忍閾值500毫秒,沮喪閾值1.5秒)。

  • 網絡使用情況

    • 接收數據量最大的是“獲取帖子內容”和“獲取用戶帖子”,分別為4450.46 KiB和4290.84 KiB。

    • 發送數據量最大的是“發起帖子”和“登錄”,分別為21.53 KiB和15.27 KiB。

  • 結論

    • 系統整體性能良好,所有請求的響應時間都在可接受范圍內,且沒有錯誤發生。

    • “獲取帖子內容”和“獲取用戶帖子”是系統中響應時間較長的操作,可能需要進一步優化。

    • 網絡吞吐量和數據傳輸量在合理范圍內,沒有明顯的瓶頸。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71721.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71721.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71721.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EasyRTC嵌入式音視頻通話SDK:基于ICE與STUN/TURN的實時音視頻通信解決方案

在當今數字化時代,實時音視頻通信技術已成為人們生活和工作中不可或缺的一部分。無論是家庭中的遠程看護、辦公場景中的遠程協作,還是工業領域的遠程巡檢和智能設備的互聯互通,高效、穩定的通信技術都是實現這些功能的核心。 EasyRTC嵌入式音…

【OneAPI】網頁截圖API-V2

API簡介 生成指定URL的網頁截圖或縮略圖。 舊版本請參考:網頁截圖 V2版本新增全屏截圖、帶殼截圖等功能,并修復了一些已知問題。 全屏截圖: 支持全屏截圖,通過設置fullscreentrue來支持全屏截圖。全屏模式下,系統…

簡單的 Python 示例,用于生成電影解說視頻的第一人稱獨白解說文案

以下是一個簡單的 Python 示例,用于生成電影解說視頻的第一人稱獨白解說文案。這個示例使用了 OpenAI 的 GPT 模型,因為它在自然語言生成方面表現出色。 實現思路 安裝必要的庫:使用 openai 庫與 OpenAI API 進行交互。設置 API 密鑰&#…

記錄小白使用 Cursor 開發第一個微信小程序(一):注冊賬號及下載工具(250308)

文章目錄 記錄小白使用 Cursor 開發第一個微信小程序(一):注冊賬號及下載工具(250308)一、微信小程序注冊摘要1.1 注冊流程要點 二、小程序發布流程三、下載工具 記錄小白使用 Cursor 開發第一個微信小程序&#xff08…

六軸傳感器ICM-20608

ICM-20608-G是一個6軸傳感器芯片,由3軸陀螺儀和3軸加速度計組成。陀螺儀可編程的滿量程有:250,500,1000和2000度/秒。加速度計可編程的滿量程有:2g,4g,8g和16g。學習Linux之SPI之前,…

python可應用在金融分析的那一個方面,如何部署在linux server上面。

Python 在金融分析中應用廣泛,以下是幾個主要方面: ### 1. **數據處理與分析** - 使用 **Pandas** 和 **NumPy** 等庫來處理和分析大規模數據集,進行清理、轉換和統計運算。 - 舉例:處理歷史市場數據,分析價格趨…

Git與GitHub:理解兩者差異及其關系

目錄 Git與GitHub:理解兩者差異及其關系Git:分布式版本控制系統概述主要特點 GitHub:基于Web的托管服務概述主要特點 Git和GitHub如何互補關系現代開發工作流 結論 Git與GitHub:理解兩者差異及其關系 Git:分布式版本控…

STM32全系大閱兵(1)

本文內容參考: STM32家族系列的區別_stm32各個系列區別-CSDN博客 STM32--STM32 微控制器詳解-CSDN博客

clickhouse刪除一條數據

在當今數據驅動的世界中,ClickHouse作為一種高性能的列式數據庫管理系統,廣泛應用于需要快速分析大量數據的場景。也許對于初學者來說,掌握如何有效地管理數據,包括添加、更新和刪除數據,是使用ClickHouse進行數據分析…

std::vector的模擬實現

目錄 構造函數 無參構造 用n個val來初始化的拷貝構造 拷貝構造 用迭代器初始化 析構函數 reserve resize pushback pop_back 迭代器及解引用 迭代器的實現 解引用[ ] insert erase 賦值拷貝 補充 vector底層也是順序表,但是vector可以儲存不同的類…

藍橋杯刷題周計劃(第二周)

目錄 前言題目一題目代碼題解分析 題目二題目代碼題解分析 題目三題目代碼題解分析 題目四題目代碼題解分析 題目五題目代碼題解分析 題目六題目代碼題解分析 題目七題目代碼題解分析 題目八題目題解分析 題目九題目代碼題解分析 題目十題目代碼題解分析 題目十一題目代碼題解分…

clion+arm-cm3+MSYS-mingw +jlink配置用于嵌入式開發

0.前言 正文可以跳過這段 初識clion,應該是2015年首次發布的時候, 那會還是大三,被一則推介廣告吸引到,當時還在用vs studio,但是就喜歡鼓搗新工具,然后下載安裝試用了clion,但是當時對cmake規…

藍橋杯備考:離散化詳解

首先,為什么要有離散化呢? 比如這道題,我們應該開一個差分數組,但是a,b之間的間隔可是太大了,難道我們要開一個2的三十二次方大小的數組嗎?我們也是開不了這么大的數組的 我們就需要把這些數離…

初學者快速入門Python爬蟲 (無廢話版)

全篇大概 5000 字(含代碼),建議閱讀時間 40min 一、Python爬蟲簡介 1.1 什么是網絡爬蟲? 定義: 網絡爬蟲(Web Crawler)是自動瀏覽互聯網并采集數據的程序,就像電子蜘蛛在網頁間"爬行"。 分類&…

Day05 實例:正向反向連接內外網環境防火墻出入站

一、正反向連接 0、先將防火墻關閉 Linux: sudo systemctl stop firewalld Windows:netsh advfirewall set allprofiles state off 1、正向連接 1.1 Linux連接Windows 00x1 開啟兩臺服務器 并且給Windows拖入nc.exe 00x2 Windows綁定自己5566端…

電力系統中各參數的詳細解釋【智能電表】

一、核心電力參數 電壓 (Voltage) 單位:伏特(V) 含義:電勢差,推動電流流動的動力 類型:線電壓(三相系統)、相電壓,如220V(家用)或380V&#xff…

【仿muduo庫one thread one loop式并發服務器實現】

文章目錄 一、項目介紹1-1、項目總體簡介1-2、項目開發環境1-3、項目核心技術1-4、項目開發流程1-5、項目如何使用 二、框架設計2-1、功能模塊劃分2-1-1、SERVER模塊2-1-2、協議模塊 2-2、項目藍圖2-2-1、整體圖2-2-2、模塊關系圖2-2-2-1、Connection 模塊關系圖2-2-2-2、Accep…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_cycle_modules

聲明在 src/core/ngx_module.h ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle);實現在 src/core/ngx_module.c ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle) {/** create a list of modules to be used for this cycle,* copy static modules to it*/cycle->modul…

Vue3實戰學習(IDEA中打開、啟動與搭建Vue3工程極簡腳手架教程(2025超詳細教程)、Windows系統命令行啟動Vue3工程)(2)

目錄 一、命令行中重新啟動已搭建好的Vue3工程。(快速上手) (0)Windows環境下使用命令行從零到一手動搭建Vue3工程教程。 (1)首先找到已建Vue3工程的目錄。 (2)無需再下載依賴包,直接執行npm ru…

使用websocket,注入依賴service的bean為null

問題:依賴注入失敗,service獲取不到,提示null 這是參考代碼 package com.shier.ws;import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.google.gson.Gson; import com.s…