Junit 面試問題和答案 [適用於初學者和有經驗者]
已發表: 2020-09-22對於使用 Java 編程語言的開發人員來說,JUnit 是一個出色的解決方案。 它可用於實現單元測試以及 UI 測試。 對於希望提高代碼質量和編程速度的組織來說,它是最受追捧的能力之一。 本文將討論標準 JUnit 面試問題,以幫助您準備並進入候選名單!
前 15 個 JUnit 面試問題和答案
1.什麼是JUnit?
JUnit 是一個用於對 Java 代碼進行單元測試的框架。 它被認為是在 JVM 引擎上進行開發者端測試的基礎。 因此,JUnit 是編程領域和測試驅動開發不可或缺的一部分。
2、你對測試和單元測試的理解是什麼?
測試是檢查應用程序是否滿足要求並實現所需功能的過程。 單元測試是指評估應用程序的單個功能或單元。
3. 區分手動和自動測試。

手動測試是在沒有測試腳本的情況下執行的,並且需要專門的人力來完成所涉及的各個步驟。 另一方面,可以使用技術工具和軟件程序在沒有人工協助的情況下完成自動化測試。 測試自動化比手動測試更便宜且耗時更少。 此外,手動測試不太可靠,因為它無法編程。
4. 你必須為每一個邏輯寫一個測試用例嗎?
測試用例是為建立程序邏輯而編寫的代碼。 在 JUnit 中,沒有必要為每個邏輯編寫測試用例,而只為那些可以合理破壞的邏輯編寫測試用例。
單元測試用例將包括一組輸入數據和預期輸出。 org.junit 包包含幾個類和接口來幫助您進行單元測試,例如 Assert、Test、Before、After 等。
5. 提到一些可以與 JUnit 集成的工具示例?
JUnit 是一個用戶友好的 Java 開發框架。 它可以很容易地與 Eclipse IDE、Apache Ant 和 Maven 進行擴展和集成。
6. 列出一些有用的 JUnit 擴展並解釋它們的用途。
有四個主要的 JUnit 擴展,即 Cactus、JWebUnit、XMLUnit 和 MockObject。 我們在下面詳細描述了它們的用途。
- Cactus:它是一個用於測試服務器端 Java 代碼的框架,它在容器內實現測試。 仙人掌生態系統有兩個組件,即仙人掌框架和仙人掌集成模塊。 框架是為編寫測試提供 API 的引擎,而集成模塊在插件的幫助下負責前端。
- JWebUnit:這個基於 java 的框架通過結合 HtmlUnit 和 Selenium 的功能提供了一個統一的測試接口。 JWebUnit 使通過鏈接、表格內容驗證、表單輸入和提交以及其他功能導航 Web 應用程序變得輕而易舉。 除了高級 Java API 之外,它還允許使用即用型斷言快速創建測試。
- XMLUnit:它提供了一個名為 XMLTestCase 的擴展類。 XMLUnit 還提供支持類,這些類允許斷言關於 XML 片段的有效性(Validator 類)、兩個 XML 片段之間的差異(Diff 和DetailedDiff)、轉換 XML 的結果(Transformer 類)等等。
- MockObject:當在單元測試中包含真實對像是不可能或不切實際的,模擬對象可以證明是一個福音。 您可以模擬複雜對象的行為並將它們與以下編碼步驟合併:
- 創建模擬對象的實例
- 設定狀態和期望
- 使用模擬對像作為參數調用域代碼
- 驗證一致性
7. 你如何測試'protected' 和'private' 方法?
在受保護的方法中,測試類和目標類聲明在同一個包中。 但是,在私有方法中,沒有直接的測試方法。 您必須將方法更改為“受保護”或手動進行測試。
8. 當返回類型為“字符串”時,JUnit 中會發生什麼?
在這種情況下,編譯會通過,但執行會失敗。 之所以會發生這種情況,是因為所有 JUnit 測試方法都設計為返回“void”。
9. 定義 (i) Fixtures (ii) Test Suit (iii) Test Runner (iv) JUnit 類
(i) 夾具用作執行測試的基準,確定結果的可重複性。 測試夾具包括一組對象的固定狀態。 方法包括:
- setUp():它在測試調用之前運行。
- tearDown():它在測試方法之後運行。
(ii) 測試運行器:它執行測試用例。
(iii) JUnit 類:它們包含用於編寫和測試 JUnit 的方法。

(iv) 測試套件是要一起運行的單元測試用例的捆綁包或集合。 您可以使用 @Suite 或 @RunWith 註解在 JUnit 中運行套件測試。
閱讀: Java 中的圖書館管理系統項目
10. 提幾個常用的JUnit註解。
註釋只是可以添加到代碼中的元標記。 @Test 註解將特定方法標記為測試方法。 其他一些有用的註釋包括@Before、@BeforeClass、@After、@AfterClass 和@Ignores。 要實現 JUnit 測試,您需要了解這些註釋的重要性。 那麼,就讓我們一一來了解一下吧。
- Test:這個註解告訴 JUnit 它可以運行 public void 方法作為測試用例。 它基本上是 org.junit.TestCase 的替代品
- 之前:如果要在特定測試用例之前執行任何語句(例如,前置條件),請使用 @Before。 此註釋允許您在測試方法之前運行類似的對象。
- Before Class:您可以使用 JUnit 中的 @BeforeClass 註解在所有測試用例之前運行語句。
- After:它會導致一些語句在每個測試用例之後運行,例如刪除臨時文件、重置變量等。
- After Class: @AfterClass 註解讓您可以在所有測試用例之後執行語句。 例如,執行完成後釋放所有資源。
- 忽略:用於在執行過程中忽略某些語句。 例如,禁用測試用例。
另請閱讀:Java 面試問題
11. 解釋不同類型的 JUnit 類。
Assert、TestCase 和 TestResult 是一些重要的 JUnit 類。 Assert 為測試用例提供方法。 TestCase 包含一個測試用例,定義了執行多個測試的夾具。 TestResult 包括收集結果的方法。
12. 你什麼時候寫單元測試?
在典型的開發週期中,單元測試是在代碼之前編寫的。 這種做法使開發人員能夠保持其代碼的質量。
13. 為什麼要避免使用 System.out.printIn() 進行調試?
如果你使用 System.out.printIn() 來調試你的代碼,從長遠來看它會受益。 每次程序運行時,都會導致對整個輸出進行手動掃描,以確保代碼正常運行。 因此,編寫 JUnit 方法和對類文件執行測試所需的時間相對較少。
14、JUnit中的測試垃圾去哪了?
測試運行者在測試期間持有參考資料。 在具有許多測試實例的擴展測試的情況下,可能直到測試運行結束才收集垃圾。 我們可以在測試運行完成之前使用 tearDown() 來收集垃圾。 在這個方法中,我們顯式地將一個對象設置為 null。
15.你如何安裝Junit?

第一步是下載 JUnit 5,這是 JUnit 的最新版本(它將是一個名為 junit.zip 的文件)。 我們需要將分發文件解壓縮到目錄 %JUNIT_HOME%。 然後,我們將 JUnit 添加到類路徑中。
接下來,我們將測試安裝。 這將涉及運行隨 Junit 分發的示例測試(不在 junit.jar 文件中,而是在安裝目錄中)。 最後,我們將確認所有測試都通過了“OK”消息。 如果他們不這樣做,我們將返回並驗證 junit.jar 是否在類路徑中。
查看:如何編寫、編譯和運行 Java 項目
結論
通過上面的 JUnit 面試問題,你可以復習你的概念,為開發人員的工作做準備。 像測試自動化工程師和軟件工程師這樣的職位也包括他們想要的技能組合中的 JUnit。 招聘人員想衡量你的技術知識和溝通能力。 因此,您的答案內容以及您如何呈現答案將產生重大影響。
如果您有興趣了解有關全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發 PG 文憑,該文憑專為在職專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目,以及任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。