为什么JUnit只在第一次失败之前运行Theory的测试用例?

Rom*_*man 9 java junit testng dataprovider

最近,JUnit增加了一个新的理论概念(自v4.4起).

简而言之,您可以使用@Theory注释(而不是@Test)标记测试方法,使测试方法参数化并声明一个参数数组,@DataPoints在同一个类的某处标记注释.

JUnit将依次运行参数化测试方法,传递从@DataPoints一个接一个检索到的参数.但只有在第一次这样的调用失败时(由于任何原因).

这个概念似乎与@DataProvidersTestNG 非常相似,但是当我们使用数据提供程序时,所有方案都会在执行结果的情况下运行.它很有用,因为你可以看到有多少有趣的工作/不工作,你可以更有效地修复你的程序.

所以,我想知道为什么不@Theory为每个人执行标记方法是什么原因@DataPoint?(从Theories运动员那里继承并制造一个可以忽略失败的自定义跑步者似乎并不那么困难,但为什么我们不能开箱即用?)

UPD:我创建了一个容错版本的Theories runner,并使其可供公众访问:https://github.com/rgorodischer/fault-tolerant-theories

为了将它与标准的Theories运行器进行比较,运行StandardTheoriesBehaviorDemo,然后将FaultTolerantTheoriesBehaviorDemo放在src/test/...文件夹下.

Mat*_*ell 2

AFAIK,这个想法与断言相同,第一次失败会停止测试。这就是参数化和理论之间的区别。

参数化采用一组数据点并针对每个数据点运行一组测试方法。理论也做了同样的事情,但是当第一个断言失败时就会失败。

尝试查看参数化。也许它提供了你想要的。