簡體   English   中英

JUnit可以對所有字符串進行斷言嗎?

[英]Can JUnit make assertions about all Strings?

JUnit(或任何其他測試框架)中是否有任何方法可以對方法的所有可能輸入進行斷言?

就像是:

assertTrue(myClass.myMethod(anyString))

編輯:我意識到有無限數量的可能輸入,但是我想我想知道是否有一些框架可以靜態地分析一種方法並檢測在所有可能的情況下都會達到一定的結果。 例如public static boolean myMethod(String input) { return true; } public static boolean myMethod(String input) { return true; }將始終返回true?

不,實際上輸入的數量是無限的。
將它們分成具有(預期)行為的測試用例是您的工作。 如果存在這樣的人工智能,那么它也可以編寫要測試的代碼。

有一些測試用例生成器,它們可以自動創建測試用例,但是它們幾乎沒有用。 他們產生了大量的測試用例,並且主要只接觸代碼,而不是測試預期的結果。

此類工具可提高測試覆蓋率,但以一種非常可疑的方式。 (我認為這是非法提高考試覆蓋率的方法:您應該進行測試,而不是碰碰!)

這種工具是Google的CodePro 使用CodePro-> Test Case生成(例如在Eclipse中)首先,您會有點驚訝,嘗試一下也不錯。 然后,您將知道自動測試用例生成的限制。

您無法使用JUnit執行此操作。 我認為您可以執行此操作的唯一方法是使用形式邏輯驗證

如前所述,這是不可能的。 但是,存在基於屬性的自動化測試方法。 這以某種方式盡可能接近您的想法。 好吧,仍然很艱難...

例如,看看scalacheck

ScalaCheck是一個用Scala編寫的庫,用於對Scala或Java程序進行基於屬性的自動化測試。 ScalaCheck最初是受Haskell庫QuickCheck的啟發,但也已經涉足了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM