繁体   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