知识大全 探索JUnit 4.4 新特性[7]

Posted

篇首语:天行健,君子以自强不息。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 探索JUnit 4.4 新特性[7]相关的知识,希望对你有一定的参考价值。

探索JUnit 4.4 新特性[7]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  清单 英镑 Pound 乘法的两个测试用例

@Testpublic void multiplyPoundsByInteger ()     assertEquals( new Pound( ) times( ) getAmount() );    assertEquals( new Pound( ) times( ) getAmount() );

  但是此时您可能又会发现这两个测试用例还是很有限 您所希望的是测试所有的整数 而不只是 和 这些只是您所想要的测试的数据的子集 两个测试用例并不能完全与您所想要测试的代码的行为相等价 您需要更多的测试用例 此时就会发现需要很多的额外工作来编写这些测试用例 更可怕的是 您会发现您需要测试用例的并不只是简单的几个 可能是成千上万个甚至无穷个测试用例才能满足等价您的代码行为的目的

  很自然的 您会想到用清单 所示的代码来表达您的测试思想

  清单 使用变量辅助编写测试用例

//利用变量来代替具体数据表达测试思想public void multiplyAnyAmountByInteger(int amount int multiplier)     assertEquals( amount * multiplier         new Pound( amount ) times( multiplier ) getAmount() );

  利用清单 的 multiplyAnyAmountByInteger 方法 可以轻松将测试用例改写成如清单 所示

  清单 改写的英镑 Pound 乘法的测试用例

@Testpublic void multiplyPoundsByInteger ()     multiplyAnyAmountByInteger( );    multiplyAnyAmountByInteger( );

  如清单 所示 以后若想增加测试用例 只要不停调用 multiplyAnyAmountByInteger 方法并赋予参数值即可

  方法 multiplyAnyAmountByInteger 就是一个理论的简单例子 理论就是一个带有参数的方法 其行为就是对任何参数都是正常的返回 不会抛出断言错误和其它异常 理论就是对一组数据进行概括性的陈述 就像一个科学理论一样 如果没有对所有可能出现的情况都进行实验 是不能证明该理论是正确的 但是只要有一种错误情况出现 该理论就不成立 相反地 一个测试就是对一个单独数据的单独陈述 就像是一个科学理论的实验一样

  如何使用理论机制

  在 JUnit 的理论机制中 每个测试方法不再是由注释 @Test 指定的无参测试函数 而是由注释 @Theory 指定的带参数的测试函数 这些参数来自一个数据集(data sets) 数据集通过注释 @DataPoint 指定

  JUnit 会自动将数据集中定义的数据类型和理论测试方法定义的参数类型进行比较 如果类型相同 会将数据集中的数据通过参数一一传入到测试方法中 数据集中的每一个数据都会被传入到每个相同类型的参数中 这时有人会问了 如果参数有多个 而且类型都和数据集中定义的数据相同 怎么办?答案是 JUnit 会将这些数据集中的数据进行一一配对组合(所有的组合情况都会被考虑到) 然后将这些数据组合统统通过参数 一一传入到理论的测试方法中 但是用户可以通过假设机制(assumption)在断言函数(assertion)执行这些参数之前 对这些通过参数传进来的数据集中的数据进行限制和过滤 达到有目的地部分地将自己想要的参数传给断言函数(assertion)来测试 只有满足所有假设的数据才会执行接下来的测试用例 任何一个假设不满足的数据 都会自动跳过该理论测试函数(假设 assumption 不满足的数据会被忽略 不再执行接下来的断言测试) 如果所有的假设都满足 测试用例断言函数不通过才代表着该理论测试不通过

cha138/Article/program/Java/ky/201311/29103

相关参考

知识大全 探索JUnit 4.4 新特性[3]

探索JUnit4.4新特性[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  清单assert

知识大全 探索JUnit 4.4 新特性[2]

探索JUnit4.4新特性[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  优点assert

知识大全 探索JUnit 4.4 新特性[8]

探索JUnit4.4新特性[8]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  清单理论机制举例

知识大全 探索JUnit 4.4 新特性[6]

探索JUnit4.4新特性[6]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  TDD的优点  

知识大全 探索JUnit 4.4 新特性[5]

探索JUnit4.4新特性[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  清单假设机制优点

知识大全 探索JUnit 4.4 新特性[4]

探索JUnit4.4新特性[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  假设机制(Ass

知识大全 探索JUnit 4.4 新特性[1]

探索JUnit4.4新特性[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  文通过理论分析和

知识大全 驾驭“野马”-- 探索Java SE 6的一些新特性

驾驭“野马”--探索JavaSE6的一些新特性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  s

知识大全 Tomcat 7 的七大新特性

Tomcat7的七大新特性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Tomcat引入了许多

稻田养鱼技术新探索

稻田养鱼这种水产养殖方式近年来被很多养殖业和种植业业主们讨论和意向开发的项目,如何打造成一定的模式、目标效益、操作过程细节、操作技术等等在我区还在萌芽中,本着为我区有意于稻田养鱼的业主确立开发本产业,