Junit_注解_枚舉

文章目錄

  • 一:Junit單元測試
    • 測試分類:
    • Junit的使用
    • @Before_@After
  • 二:注解
      • 什么是注解
      • 文檔相關的注解
      • IDEA中的javadoc使用:
      • JDK內置的3個注解
      • 自定義注解
    • 元注解
      • @Retention
      • @Target
      • @Repeatable
      • @Documented(用的很少)
      • @Inherited(用的極少)
  • 三:枚舉
    • enum關鍵字定義枚舉類
    • Enum;類的常用方法
    • 枚舉類實現接口
    • 枚舉的應用

一:Junit單元測試

測試分類:

(1)黑盒測試:
軟件的黑盒測試意味著測試要在軟件的接口處進行。這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試。
(2)白盒測試:—》Junit屬于白盒測試。
軟件的白盒測試是對軟件的過程性細節做細致的檢查。這種方法是把測試對象看做一個打開的盒子,它允許測試人員利用程序內部的邏輯結構及有關信息,設計或選擇測試用例,對程序的所有邏輯路徑進行測試,通過在不同點檢查程序狀態,確定實際狀態是否與預期的狀態一致。因此白盒測試又稱為結構測試。

Junit的使用

1.一般測試和業務做一個分離,分離為不同的包
2.測試類的名字:****Test —>見名知意
3.測試方法的定義–》這個方法可以獨立運行,不依托于main方法
4.測試方法定義完以后,不能直接就獨立運行了,必須要在方法前加入一個注解: @Test
5.導入Junit的依賴的環境
代碼可能程序上沒異常但邏輯上有問題,判定結果依舊為綠色但不代表測試通過所以我們要加入斷言: Assert.assertEquals()
第一個參數預測結果,第二個參數實際結果
測試類代碼

public class Calclatortest {Calculator cal=new Calculator();@Testpublic void Testadd(){int result=cal.add(1,4);//加入斷言:預測一下結果,判斷一下我預測的結果和 實際的結果是否一致:Assert.assertEquals(5,result);}@Testpublic void Testsub(){int ans=cal.sub(5,1);Assert.assertEquals(4,ans);}
}

@Before_@After

@Before:
某一個方法中,加入了@Before注解以后,那么這個方法中的功能會在測試方法執行前先執行
一般會在@Beforer修飾的那個方法中加入一些申請資源的代碼:申請數據庫資源,申請IO資源,申請網絡資源

@After:
某一個方法中,加入了@After注解以后,那么這個方法中的功能會在測試方法執行后先執行
一般會在@After修飾的那個方法中加入釋放資源的代碼:釋放數據庫資源,釋放IO資源,釋放網絡資源
用法

 @Beforepublic void init(){System.out.println("開始測試");}@Afterpublic void close(){System.out.println("結束測試");}

二:注解

什么是注解

1.在編譯,類加載,運行時被讀取,并執行相應的處理。通過使用注解,程序員可以在不改變原有邏輯的情況下,在源文件中嵌入一些補充信息。
2.一定程度上可以說 :框架=注解+反射+設計模式

文檔相關的注解

在這里插入圖片描述
@param @return和@exception這三個標記都是只用于方法的。
@param的格式要求: @param 形參名 形參類型 形參說明
@return的格式要求: @return 返回值類型返回值說明,如果方法的返回值類型是void就不能寫
@exception的格式要求: @exception 異常類型異常說明
@param和@exception可以并列多個

IDEA中的javadoc使用:

!](https://i-blog.csdnimg.cn/direct/b949c0250e82466ea0e25ca1a6682734.png)

在畫圈處輸入上述文字可以防止亂碼

JDK內置的3個注解

1.@Override:限定重寫父類方法,該注解只能用于方法
作用:限定重寫的方法,只要重寫方法有問題,就有錯誤提示。
2.@Deprecated:用于表示所修飾的元素(類,方法,構造器,屬性等)已過時。通常是因為所修飾的結構危險或存在更好的選擇
在方法前加入@Deprecated,這個方法就會變成一個過時方法
3.@SuppressWarnings:抑制編譯器警告
作用:若編譯器警告這一代碼,可以加入@SuppressWarnings使其不觸發警告

自定義注解

1.創建java注解
在這里插入圖片描述@interface,跟接口沒有一點關系
2.注解的內部: 以@SuppressWarnings為例,發現內部:
在這里插入圖片描述
實際上:
value()是屬性,不是方法
String[]是無參數方法(成員變量)的類型
無參數方法的類型:基本數據類型(八種),String,枚舉,注解類型,還可以是以上類型對應的數組
參數叫做:配置參數
3.使用注解
如果定義了配置參數那么使用時必須給配置參數賦值
在這里插入圖片描述
如果在定義配置參數時已經給其賦值了那么使用的時候無需傳值
賦值操作:
在這里插入圖片描述
內部沒有定義配置參數的注解可以叫做標記
內部定義了配置參數的注解叫做元數據

元注解

元注解是用于修飾其它注解的注解

@Retention

作用:指定 修飾的那個注解的生命周期
@Rentention包含一個RetentionPolicy枚舉類型的成員變量,使用@Rentention時必須為該value成員變量指定值:
(1)RetentionPolicy.SOURCE:在源文件中有效
(2)RetentionPolicy.CLASS:在class文件中有效,保留在.class文件中,但是當運行Java程序時,他就不會繼續加載了,不會保留在內存中,JVM不會保留注解
(3)RetentionPolicy.CLASS:在class文件中有效(即class保留),保留在.class文件中,但是當運行Java程序時,他就不會繼續加載了,不會保留在內存中,JVM不會保留注解
如果注解沒有加Retention元注解,那么相當于默認的注解是.CLASS的狀態

@Target

作用:被修飾的注解能用于修飾哪些程序元素

@Target也包含一個名為value的成員變量
給配置參數賦值:
1.TYPE,代表可以修飾類
2.METHOD,代表可以修飾方法
3.更多的可以去@Target的源碼里面找
annotation

@Target({TYPE, METHOD})
public @interface annotation {
}

我們給配置參數復制了TYPE和METHOD使annotation注解只可以修飾類和方法,但屬性和構造器不可修飾
在這里插入圖片描述
注意: 記得導包

@Repeatable

作用:被該元注解修飾的注解 可以重復的修飾同一個位置

@Documented(用的很少)

作用:被該元注解修飾的注解類將被javadoc工具提取成文檔。默認情況下,javadoc不包括注解

@Inherited(用的極少)

作用:如果某個類使用了被 @Inherited修飾的注解,則其子類將自動具有該注解

三:枚舉

enum關鍵字定義枚舉類

public enum Season {//必須將對象放在最開始的位置SPRING("春天","春暖花開"),SUMMER("夏天","烈日炎炎"),AUTUMN("秋天","碩果累累"),WINTER("冬天","冰天雪地");private final String SeasonName;//季節名稱private final String SeasonDesc;//季節描述//構造器私有化,外界不能調用這個構造器,只能Season內部自己調用private Season(String SeasonName,String SeasonDesc){this.SeasonName=SeasonName;this.SeasonDesc=SeasonDesc;}public String getSeasonDesc() {return SeasonDesc;}public String getSeasonName() {return SeasonName;}@Overridepublic String toString() {return "Season{" +"SeasonName='" + SeasonName + '\'' +", SeasonDesc='" + SeasonDesc + '\'' +'}';}
}

測試類

public class Test1 {public static void main(String[] args) {Season winter = Season.WINTER;System.out.println(winter);}
}

SPRING(“春天”,“春暖花開”),
SUMMER(“夏天”,“烈日炎炎”),
AUTUMN(“秋天”,“碩果累累”),
WINTER(“冬天”,“冰天雪地”);

這樣寫省略了public static final Season SPRING = new Season(“春天”,“春暖花開”);

我們可以看到 Season類中重寫了toString方法所以我們輸出的結果是
在這里插入圖片描述
現在我們將Season類中的同String方法去掉
依舊運行Test類輸出的結果是
在這里插入圖片描述
因為enum的上層父類不是Object而是java.lang.Enum

Enum;類的常用方法

1.toString():獲取對象的名字
2.values: 返回枚舉類對象的數組
3.valueOf:通過對象名字獲取這個枚舉對象

枚舉類實現接口

接口

public interface ii {void show();
}

Season類

public enum Season implements ii{SPRING,SUMMER,AUTUMN,WINTER;@Overridepublic void show() {System.out.println("這是春天");}
}

Test類

public class Test {public static void main(String[] args) {Season spring = Season.SPRING;spring.show();Season winter = Season.WINTER;winter.show();}
}

輸出結果:
在這里插入圖片描述

我們發現上面 所有的枚舉對象,調用這個show方法的時候走的都是同一個方法,結果都一樣
我們想要不同的對象調用的show方法不同
改進后的Season類

public enum Season implements ii{SPRING{public void show() {System.out.println("這是春天");}},SUMMER {public void show() {System.out.println("這是夏天");}},AUTUMN {public void show() {System.out.println("這是春秋天");}},WINTER {public void show() {System.out.println("這是冬天");}};
}

這樣子就可以達到我們的目的

枚舉的應用

1.可以在入口處對參數進行限制
例如:性別只有“男”和“女”種,所以我們可以使用enum來對設置性別的參數進行限制
Person類

public class Person {private Gender sex;public Gender getSex() {return sex;}public void setSex(Gender sex) {this.sex = sex;}
}

Gender類

public enum Gender {,;
}

Test類
在這里插入圖片描述在這里插入圖片描述
我們發現只要set方法傳入的不是“男”或”女“就會報錯

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

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

相關文章

將N8N配置為服務【ubuntu】

docker模式不在此討論。這里討論的是node安裝為n8n后,如何安裝為服務: 安裝NODE(略) 安裝N8N 一個命令解決: npm install n8n -g 安裝服務 vi /etc/systemd/system/n8n.service內容如下 [Unit] Descriptionn8…

Java后端調用外部接口標準流程詳解

在Java后端開發中,調用外部HTTP接口(如第三方平臺API、云服務、微服務等)是非常常見的需求。實現這個功能通常遵循一套標準的流程: 1. 準備DTO類(數據傳輸對象) 作用: DTO(Data Tra…

星火燎原 數智新生 —— 《GB/T 45341—2025》 × AI大模型 × 全域PaaS創新,領碼SPARK打造行業數字化轉型新范式

【摘要】 數字中國新征程,標準引航數智化。面對企業數字蝶變的關鍵關口,《GB/T 45341—2025 數字化轉型管理 參考架構》引領行業規范發展。愛分析最新數據顯示,中國iPaaS市場規模持續高增長,印證PaaS已成為企業數字化基石。 AI大…

25-7-1 論文學習(1)- Fractal Generative Models 何愷明大佬的論文

分形生成模型 Tianhong Li1 Qinyi Sun1 Lijie Fan2 Kaiming He1 摘要 模塊化是計算機科學的基石,它將復雜函數抽象為原子構建塊。在本文中,我們通過將生成模型抽象為原子生成模塊,引入了新的模塊化層次。類似于數學中的分形,我…

如何讀取運行jar中引用jar中的文件

1.問題發現 項目中有個common包資源文件,然后springboot項目引用了common,那么我們要怎么讀取這個資源了。這里需要考慮三個場景,idea運行時、common jar獨立運行時、springboot引用common后運行時。 2.問題解決 2.1.idea運行時 Protection…

【學習方法】框架質疑學習法:破解專業學習的“知識厚度”困境

今天博主給大家分享一個,我自己發明了一個比較高效的學習方法,名叫“框架質疑學習法” 本文提出的框架質疑學習法(Framework Questioning Learning Method)為本文作者,也就是我,董翔首次提出。 在軟件專業的學習中&a…

spring-ai 1.0.0 學習(十七)——MCP Client

之前學過了工具調用(spring-ai 1.0.0 學習(十二)——工具調用_springai 1.0 如何判斷調用哪一個tool工具-CSDN博客),今天來看一下MCP MCP是什么 MCP全稱是模型上下文協議,有點繞,通俗點理解&a…

Git 運行.sh文件

1.在項目文件中右擊 Open Git Bash here 顯示(base)環境 2.激活conda環境 3.復制.sh文件的相對路徑 4.將路徑復制到git終端 先輸入sh和空格,然后右擊后選paste,不要直接ctrl v 5.開始運行

MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么區別?

MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么區別? 主要解答詳細解答1. **聚簇索引(Clustered Index)**2. **非聚簇索引(Non-Clustered Index / Secondary Index)**3. **對比總結**4. **流程圖(查詢過…

[2025CVPR]DE-GANs:一種高效的生成對抗網絡

目錄 引言:數據高效GAN的困境 核心原理:動態質量篩選機制 1. 判別器拒絕采樣(DRS)的再思考 2. 質量感知動態拒絕公式 (1)質量感知階段 (2)動態拒絕階段 模型架構:輕量化設計 技術突破:三大創新點 1. 首創訓練階段DRS 2. 動態拒絕機制 3. 質量重加權策略 …

[面試] 手寫題-數組轉樹

示例數據: const arr [{ id: 1, parentId: null, name: Root },{ id: 2, parentId: 1, name: Child 1 },{ id: 3, parentId: 1, name: Child 2 },{ id: 4, parentId: 2, name: Grandchild 1 }, ]目標生成: const tree [{id: 1,name: Root,children: …

CertiK《Hack3d:2025年第二季度及上半年Web3.0安全報告》(附報告全文鏈接)

CertiK《Hack3d:2025年第二季度及上半年Web3.0安全報告》現已發布,報告顯示:僅2025年上半年,因安全事件導致的損失接近25億美元;截至目前,總損失已超過去年全年水平。整體來看,Web3.0安全形勢依…

反向傳播 梯度消失

反向傳播 backpropagation 反向傳播(Backpropagation) 是神經網絡訓練中的一種核心算法,用于通過計算誤差并將其傳播回網絡,從而更新神經網絡的參數。通過反向傳播,網絡能夠在每次迭代中逐步調整其參數(例…

京東外賣服務商加入方案對比!選擇本地生活服務商系統的優勢,到底在哪?

自入局之日起,京東外賣似乎就一直熱衷于給人驚喜: 先是在上線時規定了“2025年5月1日前入駐的商家,全年免傭金”和“僅限品質堂食商家入駐”; 再是宣布了要為外賣騎手繳納五險一金,并承擔其中的所有成本;…

【RTSP從零實踐】4、使用RTP協議封裝并傳輸AAC

😁博客主頁😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客內容🤑:🍭嵌入式開發、Linux、C語言、C、數據結構、音視頻🍭 🤣本文內容🤣&a…

Bootstrap 安裝使用教程

一、Bootstrap 簡介 Bootstrap 是一個開源的前端框架,由 Twitter 開發,旨在快速開發響應式、移動優先的 Web 頁面。它包含 HTML、CSS 和 JavaScript 組件,如按鈕、導航欄、表單等。 二、Bootstrap 安裝方式 2.1 使用 CDN(推薦入…

Java學習第二部分——基礎語法

目錄 一.數據類型 (一)數值類型(用于存儲數字,包括整數和浮點數) 1. **整數類型** 2. **浮點類型** (二)非數值類型(非數值類型用于存儲非數字數據) 1. **char** 2…

Redis分布式鎖核心原理源碼

文章目錄 概述一、Redis實現分布式鎖1.1、第一版1.2、第二版1.3、第三版1.3、第四版 二、Redisson實現分布式鎖核心源碼分析2.1、加鎖核心源碼2.2、鎖續期核心源碼2.3、重試機制核心源碼2.4、解鎖核心源碼 總結 概述 傳統的單機鎖(Synchronized,Reentran…

關于vue2使用elform的rules校驗

在使用vue2開發項目的時候使用element組件的el-form大多數情況都需要用到必填項校驗 舉個栗子&#xff1a; <el-form :model"ruleForm" :rules"rules" ref"ruleForm" label-width"100px" class"demo-ruleForm"><e…

langchain從入門到精通(二十六)——RAG優化策略(四)問題分解策略提升負責問題檢索準確率

1. LangChain 少量示例提示模板 在與 LLM 的對話中&#xff0c;提供少量的示例被稱為 少量示例&#xff0c;這是一種簡單但強大的指導生成的方式&#xff0c;在某些情況下可以顯著提高模型性能&#xff08;與之對應的是零樣本&#xff09;&#xff0c;少量示例可以降低 Prompt…