導航:首頁 > 解決方法 > idea方法檢測

idea方法檢測

發布時間:2022-12-22 16:17:39

A. IntelliJ IDEA中怎麼查看方法說明

查看注釋:Win:
Ctrl+Q,
Mac:
Control+J
補齊方法調用:
tab,如果方法有參數,游標會自動定位在小括弧內,這個時候,使用commond+P或者Alt+P可以查看參數信息;如果沒有參數,直接定位在()後;調用完畢,不需要再定位游標,直接
shift+command+Enter
(win:
Shift+Ctrl+Enter)
會自動補齊分號「;」,並自動定位到下一行。

B. 如何在IDEA中使用JUnit測試類中方法

public class StudentDaoImpl implements IStudentDao {
public void save(Student student) {//保存邏輯...}
public void update(Student student) {//更新邏輯...}

C. idea 如何查看方法被調用

idea全稱IntelliJ IDEA,是java語言開發的集成環境,是JetBrains公司的產品。 idea提倡的是智能編碼,目的是減少程序員的工作,其特色功能有智能的選取、豐富的導航模式、歷史記錄功能等,最突出的功能是調試(Debug),可以對Java代碼、JavaScript、JQuery等技術進行調試。
加密演算法

是旅居瑞士中國青年學者來學嘉和著名密碼專家J.Massey於1990年提出的。它在1990年正式公布並在以後得到增強。這種演算法是在DES演算法的基礎上發展出來的,類似於三重DES,和DES一樣IDEA也是屬於對稱密鑰演算法。發展IDEA也是因為感到DES具有密鑰太短等缺點,已經過時。IDEA的密鑰為128位,這么長的密鑰在今後若干年內應該是安全的。

類似於DES,IDEA演算法也是一種數據塊加密演算法,它設計了一系列加密輪次,每輪加密都使用從完整的加密密鑰中生成的一個子密鑰。與DES的不同處在於,它採用軟體實現和採用硬體實現同樣快速。

由於IDEA是在美國之外提出並發展起來的,避開了美國法律上對加密技術的諸多限制,因此,有關IDEA演算法和實現技術的書籍都可以自由出版和交流,可極大地促進IDEA的發展和完善。

IDEA曾今也是AES演算法標準的主要競爭者,其安全性已經在國際密碼年會上被證明。

在PGP(pretty good privacy)中,IDEA演算法被採用。

64-位數據分組被分成4個16-位子分組:xl,X2,x3,x4。這4個子分組成為演算法的第一輪的輸入,總共有8輪。在每一輪中,這4個子分組相列相異或,相加,相乘,且與6個16-位子密鑰相異或,相加,相乘。在輪與輪間,第二和第:個子分組交換。最後在輸出變換中4個子分組與4個子密鑰進行運算。

在每一輪中,執行的順序如下:(以下表述中的相加指的是兩個數mod 2^256 相加,例如:(a + b) mod p,其結果是a+b算術和除以p的余數,也就是說,(a+b) = kp +r,則 (a+b) mod p =r,又例如對於下列表述中的「(2)X2和第二個子密鑰相加」就是指用X2與第二個子密鑰的和除以2^16(即65536)後的余數。對於以下表述中的相乘,指的是:(a × b) mod p,其結果是 a × b算術乘法除以p的余數,又例如對於下列表述中的「(1)X1和第一個子密鑰相乘。」就是指用X1和第一個子密鑰相乘後的積除於(2^16+1)(即65537)後的余數。異或指的是不進位加法。)

(1)X1和第一個子密鑰相乘。

(2)X2和第二個子密鑰相加。

(3)X3和第三個子密鑰相加。

(4)X4和第四個子密鑰相乘。

(5)將第(1)步和第(3)步的結果相異或。·

(6)將第(2)步和第(4)步的結果相異或。

(7)將第(5)步的結果與第五個子密鑰相乘。

(8)將第(6)步和第(7)步的結果相加。

(9)將第(8)步的結果與第六個子密鑰相乘。

(10)將第(7)步和第(9)步的結果相加。

(11)將第(1)步和第(9)步的結果相異或。

(12)將第(3)步和第(9)步的結果相異或。

(13)將第(2)步和第(10)步的結果相異或。

(14)將第(4)步和第(10)步的結果相異或。

每一輪的輸出是第(11)、(12)、(13)和(14) 步的結果形成的4個子分組。將中間兩個分組分組交換(最後一輪除外)後,即為下一輪的輸入。

經過8輪運算之後,有一個最終的輸出變換:

(1) X1和第一個子密鑰相乘。

(2) X2和第二個子密鑰相加。

(3) X3和第三個子密鑰相加。

(4) X4和第四個子密鑰相乘。

最後,這4個子分組重新連接到一起產生密文。

產生子密鑰也很容易。這個演算法用了52個子密鑰(8輪中的每一輪需要6個,其他4個用與輸出變換)。首先,將128-位密鑰分成8個16-位子密鑰。這些是演算法的第一批8個子密鑰(第一輪六個,第二輪的頭兩個)。然後,密鑰向左環移25位後再分成8個子密鑰。開始4個用在第二輪,後面4個用在第三輪。密鑰再次向左環移25位產生另外8個子密鑰,如此進行D演算法結束。

解密過程基本上一樣,只是子密鑰需要求逆且有些微小差別,解密子密鑰要麼是加密子密鑰的加法逆要麼是乘法逆。(對IDEA而言,對於模256十1乘,全0子分組用256=-l來表示,因此0的乘法逆是0)。計運算元密鑰要花點時間,但對每一個解密密鑰,只需做一次。

關於IDEA中運用的很多概念,需要參考數論中的知識,如有疑問,可以參考以下資料:計算機密碼學(盧開澄著清華大學出版社出版),計算機密碼學及其應用,初等數論,數論導引(華羅庚著)等。關於IDEA運用的數學原理,均可在以上資料中獲得答案。

D. idea怎麼查看方法在哪裡調用

IntelliJ IDEA中可以在主菜單中選擇Navigate | Call Hierarchy命令查看一個Java方法調用樹(caller和callee兩個方向),但是不像Eclipse那樣可以查看類成員變數的調用樹。

E. IntelliJ IDEA中怎麼查看方法說明

1、寫代碼時用Alt-Insert(Code|Generate…)可以創建類裡面任何欄位的getter與setter方法。

2、CodeCompletion(代碼完成)屬性里的一個特殊的變數是,激活Ctrl-Alt-Space可以完成在或不在當前文件里的類名。如果類沒有引入則import標志會自動創建。

3、使用Ctrl-Shift-V快捷鍵可以將最近使用的剪貼板內容選擇插入到文本。使用時系統會彈出一個含有剪貼內容的對話框,從中你可以選擇你要粘貼的部分。

4、利用CodeCompletion(代碼完成)屬性可以快速地在代碼中完成各種不同地語句,方法是先鍵入一個類名地前幾個字母然後再用Ctrl-Space完成全稱。如果有多個選項,它們會列在速查列表裡。

5、用Ctrl-/與Ctrl-Shift-/來注釋/反注釋代碼行與代碼塊。

6 、-/用單行注釋標記(「//…」)來注釋/反注釋當前行或者選擇地代碼塊。而Ctrl-Shift-/則可以用塊注釋標記(「/*…*/」)把所選塊包圍起來。要反注釋一個代碼塊就在塊中任何一個地方按Ctrl-Shift-/即可。

7、按Alt-Q(View|Context Info)可以不需要移動代碼就能查看當前方法地聲明。連續按兩次會顯示當前所編輯的類名。

8、在編輯器里Ctrl-D可以復制選擇的塊或者沒有所選塊是的當前行,Ctrl-Y與之相反。

9、Ctrl-W(選擇字)在編輯器里的功能是先選擇脫字元處的單詞,然後選擇源代碼的擴展區域。舉例來說,先選擇一個方法名,然後是調用這個方法的表達式,然後是整個語句,然後包容塊,等等。

10、在任何工具窗口裡使用Escape鍵都可以把焦點移到編輯器上。

Shift-Escape不僅可以把焦點移到編輯器上而且還可以隱藏當前(或最後活動的)工具窗口。

F12鍵把焦點從編輯器移到最近使用的工具窗口。

11、在調試程序時查看任何錶達式值的一個容易的方法就是在編輯器中選擇文本(可以按幾次Ctrl-W組合鍵更有效地執行這個操作)然後按Alt-F8。

12、要打開編輯器脫字元處使用的類或者方法Java文檔的瀏覽器,就按Shift-F1(右鍵菜單的External JavaDoc)。

要使用這個功能須要把加入瀏覽器的路徑,在「General」選項中設置(Options | IDE Settings),另外還要把創建的Java文檔加入到工程中(File | Project Properties)。

13、用Ctrl-F12(View | File Structure Popup)鍵你可以在當前編輯的文件中快速導航。

這時它會顯示當前類的成員列表。選中一個要導航的元素然後按Enter鍵或F4鍵。要輕松地定位到列表中的一個條目,只需鍵入它的名字即可。

14、在代碼中把游標置於標記符或者它的檢查點上再按Alt-F7(右鍵菜單中的Find Usages…)會很快地查找到在整個工程中使用地某一個類、方法或者變數的位置。

15、按Ctrl-N(Go to | Class…)再鍵入類的名字可以快速地在編輯器里打開任何一個類。從顯示出來的下拉列表裡選擇類。

同樣的方法你可以通過使用Ctrl-Shift-N(Go to | File…)打開工程中的非Java文件。

16、要導航代碼中一些地方使用到的類、方法或者變數的聲明,把游標放在查看項上再按Ctrl-B即可。也可以通過按Ctrl鍵的同時在查看點上單擊滑鼠鍵調轉到聲明處。

17、把游標放到查看點上再按Ctrl-Alt-B可以導航到一個抽象方法的實現代碼。

18、要看一個所選擇的類的繼承層次,按Ctrl-H(Browse Type Hierarchy)即可。也可以激活編輯器中的繼承關系視圖查看當前編輯類的繼承關系。

19、使用Ctrl-Shift-F7(Search | Highlight Usages in File)可以快速高亮顯示當前文件中某一變數的使用地方。按Escape清除高亮顯示。

20、用Alt-F3(Search | Incremental Search)在編輯器中實現快速查查找功能。

在「Search for:」提示工具里輸入字元,使用箭頭鍵朝前和朝後搜索。按Escape退出。

21、按Ctrl-J組合鍵來執行一些你記不起來的Live Template縮寫。比如,鍵「it」然後按Ctrl-J看看有什麼發生。

我簡單常用能過的說這么多,更多的你在菜單和工具欄里看看吧。

F. idea怎麼使用idea添加junit case測試類

首先我需要先載相應 JUnit 相關 JAR 包載程 JUnit 官網站直接通 Maven 資源倉庫完

使用簡單 @Test 註解實現我測試編寫執行
准備工作做接我始嘗試編寫壹簡單測試代碼首先我編寫壹 Calculator 類並提供五別完加減乘除及求平運算代碼:

package net.oschina.rrfhoinn.main;
public class Calculator {
public void add(int n){
result += n;
}
public void substract(int n){
result -= n;
}
public void multiply(int n){
result *= n;
}
public void divide(int n){
result /= n;
}
public void square(int n){
result = n * n;
}
public int getReuslt(){
return result;
}
public void clear(){
result = 0;
}
private static int result;
}

測試類用JUnit4框架自要相應Package包含進主要Packageorg.junit.*包含進絕部功能句非重要import static org.junit.Assert.*;我測試候使用壹系列assertEquals()自包家注意壹壹靜態包含(static)JDK5新增添壹功能說assertEqualsAssert類壹系列靜態壹般使用式Assert. assertEquals()使用靜態包含前面類名省略使用起更加便
另外要注意我測試類壹獨立類沒任何父類測試類名字任意命名沒任何局限性所我能通類聲明判斷測試類與普通類區別於內部聲明我接著講測試類並每壹都用於測試所我必須使用註解明確表明哪些測試註解JDK5壹新特性用處非恰我看某些前@Before、@Test、@Ignore等字些註解壹@作些註解都JUnit4自定義熟練掌握些註解含義於編寫恰測試類非重要

接我創建壹測試類 CalculatorTest.java代碼:

package net.oschina.rrfhoinn.test;
import static org.junit.Assert.*;
import org.junit.Test;
import net.oschina.rrfhoinn.main.Calculator;
public class CalculatorTest {
private static Calculator calculator = new Calculator();
@Test
public void testAdd(){
calculator.add(7);
calculator.add(8);
assertEquals(15, calculator.getReuslt());
}
}

首先我要前面使用@Test標注表明壹測試於聲明要求:名字隨便取沒任何限制返值必須void且能任何參數違反些規定運行拋壹異至於內該寫些要看需要測試些比述代碼我想測試壹add()功能否確測試調用幾add函數初始值0先加7再加8我期待結應該15終實際結15則說明add()確反說明錯assertEquals(15, calculator.getResult());用判斷期待結實際結否相等其第壹參數填寫期待結第二參數填寫實際結通計算結寫JUnit 自進行測試並測試結反饋給用戶
想運行 eclipse 資源管理器選擇該類文件點擊右鍵選擇 Run As->JUnit Test 即看運行結

使用@Test 屬性 Ignore 指定測試跳
寫程序前做規劃哪些功能都應該實現並且確定即使該尚未完具體功能確定意味著編寫測試用例已經該測試用例寫完該尚未完測試候疑失敗種失敗真失敗區別 JUnit 提供壹種區別種測試函數前面加 @Ignore 標注標注含義某些尚未完暫參與測試測試結提示幾測試忽略失敗壹旦完相應函數需要@Ignore標注刪進行測試
比說面測試類 Calculator.java 假設我 Calculator 類 multiply() 沒實現我測試類 CalculatorTest 先寫測試代碼:

package net.oschina.rrfhoinn.test;
import static org.junit.Assert.*;
import org.junit.Ignore;
import org.junit.Test;
import net.oschina.rrfhoinn.main.Calculator;
public class CalculatorTest {
private static Calculator calculator = new Calculator();
... //處代碼省略
@Ignore("method square() not implemented, please test this later...")
@Test
public void testSquare(){
calculator.square(3);
assertEquals(9, calculator.getReuslt());
}
}

我再運行壹測試看結圖明顯看testSquare() @Ignore 註解已經效運行直接跳testAdd()仍運行並通測試

使用註解 @Before @After 完前置工作置工作
前置工作通指我測試運行前需要做壹些准備工作資料庫連接、文件載入、輸入數據准備等需要運行測試前做事情都屬於前置工作;類似置工作則指測試運行壹些要做事情釋放資料庫連接、輸入輸流關閉等;比我面測試由於聲明壹 Calculator 象初始值0測試完加操作值0;接測試減操作必要考慮加操作結絕壹糟糕設計我非希望每壹測試都獨立相互間沒任何耦合度我必要執行每壹測試前Calculator象進行壹復原操作消除其測試造影響任何壹測試執行前必須執行代碼壹前置工作我用註解 @Before 標注例所示:

package net.oschina.rrfhoinn.test;
...
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
public class CalculatorTest {
...//省略部代碼
@Before
public void setUp() throws Exception {
calculator.clear();
}
@After
public void tearDown() throws Exception {
System.out.println("will do sth here...");
}
...//省略部代碼
}

另外要說註解 @Before 定義 org.junit.Before 類使用需要其引入我代碼做每我運行測試JUnit 都先運行 setUp() result 值清零要注意再需要 @Test 註解並壹 test壹前置工作同理任何測試執行需要進行收尾工作我應該使用 @After 標注與類似由於本例比較簡單需要用功能所我簡單給添加壹 tearDown() 並收尾列印壹句控制台並且使用 @After 註解
使用@BeforeClass @AfterClass 完需要執行壹前置工作置工作
面我提兩註解 @Before @After 我看看否適合完功能:壹類負責文件(超500 MB)進行讀寫每壹都文件進行操作換句說調用每壹前我都要打壹文件並讀入文件內容絕壹非耗費操作我使用 @Before @After 每測試都要讀取壹文件效率及其低所我希望所測試壹始讀壹文件所測試結束釋放文件每測試都讀文件JUnit作者顯考慮問題給@BeforeClass @AfterClass 兩註解幫我實現功能名字看用兩註解標注函數測試用例初始化執行 @BeforeClass 所測試執行完畢執行 @AfterClass 進行收尾工作要注意壹每測試類能壹標注 @BeforeClass 或 @AfterClass且該必須 public static 類型
使用@Test 屬性 timeout 完限測試檢測代碼死循環
現假設我 Calculator 類 square() 死循環應該辦呢比說像面:

public void square(int n){
for(;;){}
}

測試候遇死循環臉絕露笑容於些邏輯復雜循環嵌套比較深、能現死循環程序壹定要採取壹些預防措施限測試壹解決案我給些測試函數設定壹預期執行間超壹間系統強行終止並且系統向匯報該函數結束原超發現些 Bug 要實現壹功能需要給 @Test 標注加壹參數timeout即代碼:

@Test(timeout=2000L)
public void testSquare() {
calculator.square(3);
assertEquals(9, calculator.getReuslt());
}

timeout參數表明預計該運行單位毫秒2000代表2秒現我讓測試運行壹看看失敗效

使用@Test 屬性expected監控測試能拋某些異
JAVA異處理壹重點經編寫壹些需要拋異函數覺壹函數應該拋異沒拋算算 Bug 呢BugJUnit 考慮壹點並且幫助我找種 Bug例我寫計算器類除功能除數壹0必要拋除0異我必要些進行測試代碼:

@Test(expected=java.lang.ArithmeticException.class)
public void testDivide(){
calculator.divide(0);
}

述代碼所示我需要使用@Test註解expected屬性我要檢驗異( java.lang.ArithmeticException)傳遞給 JUnit 框架能自幫我檢測否拋我指定異
指定 JUnit 運行測試用例 Runner
家沒想問題測試代碼提交給JUnit框架框架何運行代碼呢答案RunnerJUnitRunner負責調用測試代碼每壹Runner都其各自特殊功能要根據需要選擇同Runner運行測試代碼能覺奇怪前面我寫測試並沒明確指定壹Runner啊JUnit壹默認Runner沒指定系統自使用默認Runner運行代碼換句說面兩段代碼含義完全壹:

import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class CalculatorTest {
...//省略處代碼
}
//用系統默認JUnit4.class運行效完全壹
public class CalculatorTest {
...//省略處代碼
}

G. 怎麼用intellij調試junit單元測試

首先我們需要先下載相應的 JUnit 相關的 JAR 包,下載的過程可以去 JUnit 的官方網站,也可以直接通過 Maven 資源倉庫來完成。

使用簡單的 @Test 註解實現我們的測試方法的編寫和執行
准備工作做好之後,接下來我們就可以開始嘗試編寫壹個簡單的測試代碼了。首先,我們編寫了壹個 Calculator 類,並提供五個方法分別完成加減乘除以及求平方的運算。代碼如下:

package net.oschina.rrfhoinn.main;
public class Calculator {
public void add(int n){
result += n;
}
public void substract(int n){
result -= n;
}
public void multiply(int n){
result *= n;
}
public void divide(int n){
result /= n;
}
public void square(int n){
result = n * n;
}
public int getReuslt(){
return result;
}
public void clear(){
result = 0;
}
private static int result;
}

在測試類中用到了JUnit4框架,自然要把相應地Package包含進來。最主要地一個Package就是org.junit.*。把它包含進來之後,絕大部分功能就有了。還有一句話也非常地重要「import static org.junit.Assert.*;」,我們在測試的時候使用的壹系列assertEquals()方法就來自這個包。大家注意壹下,這是壹個靜態包含(static),是JDK5中新增添的壹個功能。也就是說,assertEquals是Assert類中的壹系列的靜態方法,壹般的使用方式是Assert. assertEquals(),但是使用了靜態包含後,前面的類名就可以省略了,使用起來更加的方便。
另外要注意的是,我們的測試類是壹個獨立的類,沒有任何父類。測試類的名字也可以任意命名,沒有任何局限性。所以我們不能通過類的聲明來判斷它是不是一個測試類,它與普通類的區別在於它內部的方法的聲明,我們接著會講到。在測試類中,並不是每壹個方法都是用於測試的,所以我們必須使用「註解」來明確表明哪些是測試方法。「註解」也是JDK5的壹個新特性,用在此處非常恰當。我們可以看到,在某些方法的前有@Before、@Test、@Ignore等字樣,這些就是註解,以壹個「@」作為開頭。這些註解都是JUnit4自定義的,熟練掌握這些註解的含義,對於編寫恰當的測試類非常重要。

接下來我們創建壹個測試類 CalculatorTest.java,代碼如下:

package net.oschina.rrfhoinn.test;
import static org.junit.Assert.*;
import org.junit.Test;
import net.oschina.rrfhoinn.main.Calculator;
public class CalculatorTest {
private static Calculator calculator = new Calculator();
@Test
public void testAdd(){
calculator.add(7);
calculator.add(8);
assertEquals(15, calculator.getReuslt());
}
}

首先,我們要在方法的前面使用@Test標注,以表明這是壹個測試方法。對於方法的聲明也有如下要求:名字可以隨便取,沒有任何限制,但是返回值必須為void,而且不能有任何參數。如果違反這些規定,會在運行時拋出壹個異常。至於方法內該寫些什麼,那就要看你需要測試些什麼了。比如上述代碼中,我們想測試壹下add()方法的功能是否正確,就在測試方法中調用幾次add函數,初始值為0,先加7,再加8,我們期待的結果應該是15。如果最終實際結果也是15,則說明add()方法是正確的,反之說明它是錯的。assertEquals(15, calculator.getResult());就是用來判斷期待結果和實際結果是否相等,其中第壹個參數填寫期待結果,第二個參數填寫實際結果,也就是通過計算得到的結果。這樣寫好之後,JUnit 會自動進行測試並把測試結果反饋給用戶。
如果想運行它,可以在 eclipse 的資源管理器中選擇該類文件,然後點擊右鍵,選擇 Run As->JUnit Test 即可看到運行結果。

使用@Test 的屬性 Ignore 指定測試時跳過這個方法
如果在寫程序前做了很好的規劃,那麼哪些方法是什麼功能都應該實現並且確定下來。因此,即使該方法尚未完成,他的具體功能也是確定的,這也就意味著你可以為他編寫測試用例。但是,如果你已經把該方法的測試用例寫完,但該方法尚未完成,那麼測試的時候無疑是「失敗」。這種失敗和真正的失敗是有區別的,因此 JUnit 提供了壹種方法來區別他們,那就是在這種測試函數的前面加上 @Ignore 標注,這個標注的含義就是「某些方法尚未完成,暫不參與此次測試」。這樣的話測試結果就會提示你有幾個測試被忽略,而不是失敗。壹旦你完成了相應函數,只需要把@Ignore標注刪去,就可以進行正常的測試。
比如說上面的測試類 Calculator.java 中,假設我們的 Calculator 類的 multiply() 方法沒有實現,我們可以在測試類 CalculatorTest 中先寫如下測試代碼:

package net.oschina.rrfhoinn.test;
import static org.junit.Assert.*;
import org.junit.Ignore;
import org.junit.Test;
import net.oschina.rrfhoinn.main.Calculator;
public class CalculatorTest {
private static Calculator calculator = new Calculator();
... //此處代碼省略
@Ignore("method square() not implemented, please test this later...")
@Test
public void testSquare(){
calculator.square(3);
assertEquals(9, calculator.getReuslt());
}
}

我們再運行壹次測試,會看到如下結果,從圖中可以很明顯的看出,方法testSquare() 上的 @Ignore 註解已經生效了,運行時直接跳過了它,而方法testAdd()仍然正常的運行並通過了測試。

使用註解 @Before 和 @After 來完成前置工作和後置工作
前置工作通常是指我們的測試方法在運行之前需要做的壹些准備工作,如資料庫的連接、文件的載入、輸入數據的准備等需要在運行測試方法之前做的事情,都屬於前置工作;類似的,後置工作則是指測試方法在運行之後的壹些要做的事情,如釋放資料庫連接、輸入輸出流的關閉等;比如我們上面的測試,由於只聲明了壹個 Calculator 對象,他的初始值是0,但是測試完加法操作後,他的值就不是0了;接下來測試減法操作,就必然要考慮上次加法操作的結果。這絕對是壹個很糟糕的設計!我們非常希望每壹個測試方法都是獨立的,相互之間沒有任何耦合度。因此,我們就很有必要在執行每壹個測試方法之前,對Calculator對象進行壹個「復原」操作,以消除其他測試造成的影響。因此,「在任何壹個測試方法執行之前必須執行的代碼」就是壹個前置工作,我們用註解 @Before 來標注它,如下例子所示:

package net.oschina.rrfhoinn.test;
...
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
public class CalculatorTest {
...//這里省略部分代碼
@Before
public void setUp() throws Exception {
calculator.clear();
}
@After
public void tearDown() throws Exception {
System.out.println("will do sth here...");
}
...//這里省略部分代碼
}

另外要說的是,註解 @Before 是定義在 org.junit.Before 這個類中的,因此使用時需要將其引入我們的代碼中。這樣做了之後,每次我們運行測試方法時,JUnit 都會先運行 setUp() 方法將 result 的值清零。不過要注意的是,這里不再需要 @Test 註解,因為這並不是壹個 test,只是壹個前置工作。同理,如果「在任何測試執行之後需要進行的收尾工作,我們應該使用 @After 來標注,方法與它類似。由於本例比較簡單,不需要用到此功能,所以我們只是簡單了給它添加了壹個 tearDown() 方法並在收尾時列印壹句話到控制台,並且使用 @After 來註解這個方法。
使用@BeforeClass 和 @AfterClass 來完成只需要執行壹次的前置工作和後置工作
上面我們提到了兩個註解 @Before 和 @After ,我們來看看他們是否適合完成如下功能:有壹個類負責對大文件(超過500 MB)進行讀寫,他的每壹個方法都是對文件進行操作。換句話說,在調用每壹個方法之前,我們都要打開壹個大文件並讀入文件內容,這絕對是壹個非常耗費時的操作。如果我們使用 @Before 和 @After ,那麼每次測試都要讀取壹次文件,效率及其低下。所以我們希望的是,在所有測試壹開始讀壹次文件,所有測試結束之後釋放文件,而不是每次測試都讀文件。JUnit的作者顯然也考慮到了這個問題,它給出了@BeforeClass 和 @AfterClass 兩個註解來幫我們實現這個功能。從名字上就可以看出,用這兩個註解標注的函數,只在測試用例初始化時執行 @BeforeClass 方法,當所有測試執行完畢之後,執行 @AfterClass 進行收尾工作。在這里要注意壹下,每個測試類只能有壹個方法被標注為 @BeforeClass 或 @AfterClass,而且該方法必須是 public static 類型的。
使用@Test 的屬性 timeout 來完成限時測試,以檢測代碼中的死循環
現在假設我們的 Calculator 類中的 square() 方法是個死循環,那應該怎麼辦呢,比如說像下面這樣:

public void square(int n){
for(;;){}
}

如果測試的時候遇到死循環,你的臉上絕對不會露出笑容的。因此,對於那些邏輯很復雜,循環嵌套比較深的、有可能出現死循環的程序,因此壹定要採取壹些預防措施。限時測試是壹個很好的解決方案。我們給這些測試函數設定壹個預期的執行時間,超過了這壹時間,他們就會被系統強行終止,並且系統還會向你匯報該函數結束的原因是因為超時,這樣你就可以發現這些 Bug 了。要實現這壹功能,只需要給 @Test 標注加壹個參數timeout即可,代碼如下:

@Test(timeout=2000L)
public void testSquare() {
calculator.square(3);
assertEquals(9, calculator.getReuslt());
}

timeout參數表明了你預計該方法運行的時長,單位為毫秒,因此2000就代表2秒。現在我們讓這個測試方法運行壹下,看看失敗時是什麼效果。

使用@Test 的屬性expected來監控測試方法中可能會拋出的某些異常
JAVA中的異常處理也是壹個重點,因此你經常會編寫壹些需要拋出異常的函數。如果你覺得壹個函數應該拋出異常,但是它沒拋出,這算不算 Bug 呢?這當然是Bug,JUnit 也考慮到了這壹點,並且可以幫助我們找到這種 Bug。例如,我們寫的計算器類有除法功能,如果除數是壹個0,那麼必然要拋出「除0異常」。因此,我們很有必要對這些進行測試。代碼如下:

@Test(expected=java.lang.ArithmeticException.class)
public void testDivide(){
calculator.divide(0);
}

如上述代碼所示,我們需要使用@Test註解中的expected屬性,將我們要檢驗的異常(這里是 java.lang.ArithmeticException)傳遞給他,這樣 JUnit 框架就能自動幫我們檢測是否拋出了我們指定的異常。
指定 JUnit 運行測試用例時的 Runner
大家有沒有想過這個問題,當你把測試代碼提交給JUnit框架後,框架是如何來運行你的代碼的呢?答案就是Runner。在JUnit中有很多個Runner,他們負責調用你的測試代碼,每壹個Runner都有其各自的特殊功能,你要根據需要選擇不同的Runner來運行你的測試代碼。可能你會覺得奇怪,前面我們寫了那麼多測試,並沒有明確指定壹個Runner啊?這是因為JUnit中有壹個默認的Runner,如果你沒有指定,那麼系統會自動使用默認Runner來運行你的代碼。換句話說,下面兩段代碼含義是完全壹樣的:

import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class CalculatorTest {
...//省略此處代碼
}
//用了系統默認的JUnit4.class,運行效果完全壹樣
public class CalculatorTest {
...//省略此處代碼
}

H. Intellij IDEA使用測試類

Intellij IDEA使用測試類的話一定要把測試類放到test測試類文件夾下面:

如果放到main文件夾下面就會無法導入測試類相關的包,如下圖:

此外,Intellij IDEA只會默認執行類名為:Testxxxx /xxxTest / xxxTestCase這三個名稱的測試類:

但是不要用Test作為類名,不然在測試方法上面寫@Test的時候它會誤以為是你自己寫的Test的annotation。

I. IDEA靜態檢測不出實例化泛型類的私有構造方法的錯誤

構造器私有化了,在其他類中不能實例化 , 基本構造器私有化都是用來做單例模式的 , 讓你這個類變成單例對象

多用於配置類等不需要經常實例化的類中

參考博客 :網頁鏈接

J. intellij idea怎麼運行一個junit測試方法

public class ThreadTest3Test {

@org.junit.Test
public void testAa() throws Exception {

}
}
加@org.junit.Test注釋看看,然後引入junit包,應該就可以了

閱讀全文

與idea方法檢測相關的資料

熱點內容
最簡單的房子封頂方法 瀏覽:441
咳嗽灸溫控貼使用方法 瀏覽:898
男士如何美白臉部最快方法 瀏覽:718
學生提分方法怎麼寫 瀏覽:306
國標中檢測金葡萄球菌的三種方法 瀏覽:805
文言文劃分停頓的方法有哪些 瀏覽:343
檢測酶活性方法 瀏覽:228
常用心理測驗的應用方法 瀏覽:520
快速取戒指的方法 瀏覽:518
紫甘藍正確服用方法 瀏覽:751
喉原位癌早期浸潤的治療方法 瀏覽:299
桂花樹苗嫁接方法視頻 瀏覽:956
如何判斷出貨方法 瀏覽:627
每個模塊那麼多方法如何記 瀏覽:6
巰基乙酸單甘油酯檢測方法 瀏覽:147
尖銳疣治療的方法 瀏覽:800
使用什麼方法解決 瀏覽:802
搓澡神器使用方法 瀏覽:388
閉角青光眼後期治療方法 瀏覽:724
清洗瓷磚方法有哪些 瀏覽:557