清单 理论机制举例
import static orghamcrestMatchers*; //指定接下来要使用的Matcher匹配符
import static orgjunitAssume*; //指定需要使用假设assume*来辅助理论Theory
import static orgjunitAssert*; //指定需要使用断言assert*来判断测试是否通过
import orgjunitexperimentaltheoriesDataPoint; //需要使用注释@DataPoint来指定数据集
import orgjunitexperimentaltheoriesTheories; //接下来@RunWith要指定Theoriesclass
import orgjunitexperimentaltheoriesTheory; //注释@Theory指定理论的测试函数
import orgjunitrunnerRunWith; //需要使用@RunWith指定接下来运行测试的类
import orgjunitTest;
//注意必须得使用@RunWith指定Theoriesclass
@RunWith(Theoriesclass)
public class TheoryTest {
//利用注释@DataPoint来指定一组数据集这些数据集中的数据用来证明或反驳接下来定义的Theory理论
//testNames和testNames这两个理论Theory测试函数的参数都是String所以Junit会将这个
//@DataPoint定义的String进行两两组合统统一一传入到testNames和testNames中所以参数名year
//和name是不起任何作用的同样有机会会传给参数nameWorks也同样有机会传给参数year
@DataPoint public static String YEAR_ = ;
@DataPoint public static String YEAR_ = ;
@DataPoint public static String NAME = developer;
@DataPoint public static String NAME = Works;
@DataPoint public static String NAME = developerWorks;
//注意使用@Theory来指定测试函数而不是@Test
@Theory
public void testNames( String year String name ) {
assumeThat( year is() ); //year必须是否则跳过该测试函数
Systemoutprintln( year + + name );
assertThat( year is() ); //这里的断言语句没有实际意义这里举此例只是为了不中断测试
}
//注意使用@Theory来指定测试函数而不是@Test
@Theory
public void testNames( String year String name ) {
assumeThat(year is()); //year必须是否则跳过该测试函数
//name必须既不是也不是否则跳过该测试函数
assumeThat(name allOf( not(is()) not(is())));
Systemoutprintln( year + + name );
assertThat( year is() ); //这里的断言语句没有实际意义这里举此例只是为了不中断测试
}
结果输出:
第一个Theory打印出
developer
Works
developerWorks
第二个Theory打印出
developer
Works
developerWorks
结束语
本文通过详细深入的理论介绍和简单易懂的实例全面剖析了 JUnit 的三个新特性
提供了新的断言语法(assertion syntax)——assertThat提供了假设机制(assumptions)
提供了理论机制(Theories)
相信读者看完后一定会对 JUnit 有着非常深入的了解并可以轻松将其运用到自己的开发工程中
[] [] [] [] [] [] [] []