[英]Why can classes being unit tested with JUnit not have a main?
我的講師以前曾提到過這一點,但是我真的不明白為什么會這樣。 有人可以解釋嗎?
我們正在編寫一個程序來計算素數數組列表,並且必須使用JUnit來確保此數組列表的所有成員都是素數。 為什么不能在測試此類時使用main?
非常感謝你 :)
好的,這些答案大部分都太復雜了。 我認為您的問題更為根本。 它是一個非常好的
答案是當您成為Java開發人員並開始編寫隨時間推移而更新/修復的大量代碼時,那么使用一個單獨的測試插件會有所幫助,該插件將自動從代碼外部對您的代碼運行測試以檢查是否仍以您期望的方式工作。 這意味着您可以出於任何原因修復/調試代碼的不同方面,然后您的老板走過去,並詢問代碼自修復以來仍然按照客戶的意願進行操作嗎? 無需復雜,您可以在沒有復雜的內部錯誤語句的情況下回答他,該錯誤語句與正常的程序輸出混合在一起(並在非測試條件下降低了代碼的速度),但是帶有一個漂亮的綠色junit欄,表示所有語句仍然有效。 在開發大型項目並且要做數百個測試之前,您將看不到它的價值。 此外,junit還提供了許多其他技巧。
因為JUnit提供了一個調用您在類中提供的函數的main
。 您仍然可以擁有自己的main
功能。 當您運行JUnit時,它們將不會被使用。 您可以使用main
功能分別測試您自己的類,但是使用JUnit具有org.life.java的答案中所述的一些優點。
您可以,只是不推薦使用。 如果編寫用於測試的單元測試,則可以使用junit測試運行程序來運行該測試並生成報告,以表明該測試是通過還是失敗。 如果您不這樣做,則需要編寫自己的報告機制。
單元測試通常具有以下結構:
您的情況類似,因此很適合使用junit。
可用的單元測試API為您提供了通常必須自己編寫的有用實用程序。
您為什么不嘗試兩種方法並自己看看。
在單元測試中,您並未測試任何整體。 單元測試通常必須測試UNIT的一種方法。 因此,您應該編寫用於計算數組的方法,並使用Junit來測試該方法。
主要方法只是一個入口點,它“定義”過程的流程。 在單元測試中,我們不必擔心流程。 我們只是在單元上作罷。 使用系統/組件測試而不是通過單元測試來驗證程序流。
參見: org.junit.runner.JUnitCore.main(String...)
,諸如此類的基礎。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.