• junit 测试及assert的扩张


    @Test
    public void method()
    测试注释指示该公共无效方法它所附着可以作为一个测试用例。
    @Before
    public void method()
    Before注释表示,该方法必须在类中的每个测试之前执行,以便执行测试某些必要的先决条件。
    @BeforeClass
    public static void method()
    BeforeClass注释指出这是附着在静态方法必须执行一次并在类的所有测试之前。发生这种情况时一般是测试计算共享配置方法(如连接到数据库)。
    @After
    public void method()
    After 注释指示,该方法在执行每项测试后执行(如执行每一个测试后重置某些变量,删除临时变量等)
    @AfterClass
    public static void method()
    当需要执行所有的测试在JUnit测试用例类后执行,AfterClass注解可以使用以清理建立方法,(从数据库如断开连接)。注意:附有此批注(类似于BeforeClass)的方法必须定义为静态。
    @Ignore
    public static void method()
    当想暂时禁用特定的测试执行可以使用忽略注释。每个被注解为@Ignore的方法将不被执行。
    断言描述
    void assertEquals([String message], expected value, actual value) 断言两个值相等。值可能是类型有 int, short, long, byte, char or java.lang.Object. 第一个参数是一个可选的字符串消息
    void assertTrue([String message], boolean condition) 断言一个条件为真
    void assertFalse([String message],boolean condition) 断言一个条件为假
    void assertNotNull([String message], java.lang.Object object) 断言一个对象不为空(null)
    void assertNull([String message], java.lang.Object object) 断言一个对象为空(null)
    void assertSame([String message], java.lang.Object expected, java.lang.Object actual) 断言,两个对象引用相同的对象
    void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual) 断言,两个对象不是引用同一个对象
    void assertArrayEquals([String message], expectedArray, resultArray) 断言预期数组和结果数组相等。数组的类型可能是 int, long, short, char, byte or java.lang.Object.
    @RunWith(Suite.class)
    @Suite.SuiteClasses({ PrepareMyBagTest.class, AddPencilsTest.class })
    public class SuitTest {
    
    }

    使用@ Suite.SuiteClasses注解,你可以定义测试类,将被列入执行。

    所以,如果用鼠标右键单击测试套件并选择 Run As -> JUnit Test, 两个测试类与已经在@ Suite.SuiteClasses注解定义的顺序执行。

    对于assert方法的扩张:

    //一般匹配符
    
    // allOf匹配符表明如果接下来的所有条件必须都成立测试才通过,相当于“与”(&&)
    assertThat( testedNumber, allOf( greaterThan(8), lessThan(16) ) );
    // anyOf匹配符表明如果接下来的所有条件只要有一个成立则测试通过,相当于“或”(||)
    assertThat( testedNumber, anyOf( greaterThan(16), lessThan(8) ) );
    // anything匹配符表明无论什么条件,永远为true
    assertThat( testedNumber, anything() );
    // is匹配符表明如果前面待测的object等于后面给出的object,则测试通过
    assertThat( testedString, is("developerWorks") );
    // not匹配符和is匹配符正好相反,表明如果前面待测的object不等于后面给出的object,则测试通过
    assertThat( testedString, not("developerWorks") );
    
    //字符串相关匹配符
    
    // containsString匹配符表明如果测试的字符串testedString包含子字符串"developerWorks"则测试通过
    assertThat( testedString, containsString("developerWorks") );
    // endsWith匹配符表明如果测试的字符串testedString以子字符串"developerWorks"结尾则测试通过
    assertThat( testedString, endsWith("developerWorks") ); 
    // startsWith匹配符表明如果测试的字符串testedString以子字符串"developerWorks"开始则测试通过
    assertThat( testedString, startsWith("developerWorks") ); 
    // equalTo匹配符表明如果测试的testedValue等于expectedValue则测试通过,equalTo可以测试数值之间,字
    //符串之间和对象之间是否相等,相当于Object的equals方法
    assertThat( testedValue, equalTo( expectedValue ) ); 
    // equalToIgnoringCase匹配符表明如果测试的字符串testedString在忽略大小写的情况下等于
    //"developerWorks"则测试通过
    assertThat( testedString, equalToIgnoringCase("developerWorks") ); 
    // equalToIgnoringWhiteSpace匹配符表明如果测试的字符串testedString在忽略头尾的任意个空格的情况下等
    //于"developerWorks"则测试通过,注意:字符串中的空格不能被忽略
    assertThat( testedString, equalToIgnoringWhiteSpace("developerWorks") );
    
    //数值相关匹配符
    
    // closeTo匹配符表明如果所测试的浮点型数testedDouble在20.0±0.5范围之内则测试通过
    assertThat( testedDouble, closeTo( 20.0, 0.5 ) );
    // greaterThan匹配符表明如果所测试的数值testedNumber大于16.0则测试通过
    assertThat( testedNumber, greaterThan(16.0) );
    // lessThan匹配符表明如果所测试的数值testedNumber小于16.0则测试通过
    assertThat( testedNumber, lessThan (16.0) );
    // greaterThanOrEqualTo匹配符表明如果所测试的数值testedNumber大于等于16.0则测试通过
    assertThat( testedNumber, greaterThanOrEqualTo (16.0) );
    // lessThanOrEqualTo匹配符表明如果所测试的数值testedNumber小于等于16.0则测试通过
    assertThat( testedNumber, lessThanOrEqualTo (16.0) );
    
    //collection相关匹配符
    
    // hasEntry匹配符表明如果测试的Map对象mapObject含有一个键值为"key"对应元素值为"value"的Entry项则
    //测试通过
    assertThat( mapObject, hasEntry("key","value") );
    // hasItem匹配符表明如果测试的迭代对象iterableObject含有元素“element”项则测试通过
    assertThat( iterableObject, hasItem ("element") );
    // hasKey匹配符表明如果测试的Map对象mapObject含有键值“key”则测试通过
    assertThat( mapObject, hasKey("key"));
    // hasValue匹配符表明如果测试的Map对象mapObject含有元素值“value”则测试通过
    assertThat( mapObject, hasValue("key"));

    转载地址:http://www.yiibai.com/junit/creating-parameterized-tests.html,有时间实际操作一把,再整理该文章

  • 相关阅读:
    spring3.0使用annotation完全代替XML(续)
    spring3.0使用annotation完全代替XML
    Hibernate Session中的save(),update(),delete(),saveOrUpdate() 细粒度分析
    SpringMVC介绍之Validation
    Mysql 5.7 使用SSL安全连接
    深入分析Java ClassLoader原理
    Hibernate 动态分页查询
    【翻译自mos文章】Linux的/var/log/messages是空的(0k),messages.0, messages.1也是空的
    <html>
    Android Notification和权限机制探讨
  • 原文地址:https://www.cnblogs.com/yingchen/p/5100660.html
走看看 - 开发者的网上家园