JUnit
我就爱学习
热爱生活 热爱工作 积极向上 好好学习
展开
-
Matchers and assertthat
assertThat的一般句型为:assertThat([value],[matcher statement]);这种断言的优点有:1.更具有可读性:该语法允许我们以“主谓宾”的方式来思考(assert "x is 3"), 而不是 assertEquals(assert "equals 3 x")。2.易组合性:任何Matcher语句可以是否定的(not(s)),组合的(翻译 2015-02-05 14:20:42 · 921 阅读 · 0 评论 -
JUnit basic annotation
个标准的Junit 4的运行流程,大致如下:测试类实例化 -> @BeforeClass -> @Before -> @Test -> @After -> @AfterClass下面的代码输出明确表明了其运行流程:import org.junit.After;import org.junit.AfterClass;import org.junit.Before;imp转载 2015-02-05 17:27:08 · 438 阅读 · 0 评论 -
Test execution order
刚开始的时候,JUnit并没有规定测试方法的调用执行顺序。方法通过映射的API返回的顺序进行调用。然而,使用JVM顺序是不明智的,因为Java平台没有规定任何特定的顺序,事实上JDK7或多或少的返回的是随机顺序。大部分写的好的测试代码不会假定一个顺序,在特定的平台上一个可预言的失败比一个随机的失败更好。从4.11版本开始,如果想要改变测试执行顺序,只要简单的加一个 @FixMeth翻译 2015-02-05 14:18:13 · 685 阅读 · 0 评论 -
Ignoring a Test
如果我们不想让某个测试失败,我们仅仅想要忽略它,那么我们可以暂时的disable它。有三种方法来忽略一个测试:把方法注释掉删除 @Test 注释增加 @Ignore注释: @Ignore([ignore reason])方法一和方法二会导致测试结果不包括该测试。而使用方法三的话,执行完测试之后,我们不仅会知道跑多少测试,失败多少测试,还会知道有多少测试被忽略了。通过在@Ig翻译 2015-02-05 14:22:02 · 545 阅读 · 0 评论 -
Assumptions
理想情况下,写测试用例的开发人员可以明确的知道所有导致他们所写的测试用例不通过的地方,但是有的时候,这些导致测试用例不通过的地方并不是很容易的被发现,可能隐藏的很深,从而导致开发人员在写测试用例时很难预测到这些因素,而且往往这些因素并不是开发人员当初设计测试用例时真正的目的,它们的测试点事希望测试出被测代码中别的出错地方。比如,一个测试用例运行的 locale(如:Locale.US)翻译 2015-02-05 14:26:10 · 875 阅读 · 0 评论 -
Timeout for tests
如果想把timeout太久的测试自动标记为失败,有两种方法:1.在 @Test里加上 Timeout 参数定义"timeout=1000“的话,如果超过1000 毫秒,failure会被一个抛出的异常触发。import static org.junit.Assert.*;import org.junit.Test;public class TimeoutTest {翻译 2015-02-05 14:23:01 · 885 阅读 · 0 评论 -
Aggregating tests in suites
我们可以将来自不同类的test组成一个test suite。在JUnit 3.8.x我们使用 static Test suite()方法,但是在JUnit4我们使用在类前面加上注释 @RunWith(Suite.class)和 @SuiteClasses(TestClass1.class,...)的方式。这样当我们跑这个suite类的时候,整个suite类包含的tests都会被run。翻译 2015-02-05 14:16:59 · 394 阅读 · 0 评论 -
Rules
我们之前处理异常的时候用到过Rules,当然还有很多其他规则。Rules允许弹性的添加或者重定义测试方法的行为。测试者可以重复使用或者扩展下面的某一个Rules,也可以写一个属于自己的规则。这里先展示一张 TestRule的类图:基本的规则有:1.TemporaryFolder Rule该规则建立的文件或者文件夹会在测试方法结束之后自动删除(不管测试pass还是fa翻译 2015-02-05 14:27:10 · 792 阅读 · 0 评论 -
Assertions
JUnit提供了许多重载的断言方法,这些方法均可以通过"import static org.junit.Assert.*"导入。方法的参数顺序一般都是([失败时打印的字符串消息],期望值,实际值)。特别要提到的一种断言是assertThat,它的参数是([失败时打印的字符串消息],实际值,Matcher对象),参数顺序和其他的断言方法正好相反。同时由于生成Matcher对象需要用到”o翻译 2015-02-05 14:14:50 · 1049 阅读 · 1 评论 -
Exception testing
怎样去验证代码是否抛出我们期望的异常呢?虽然在代码正常结束时候验证很重要,但是在异常的情况下确保代码如我们希望的运行也很重要。比如说:new ArrayList().get(0);这句代码会抛出一个IndexOutOfBoundsException异常。有三种方法来验证ArrayList是否抛出了正确的异常。1. @Test 里面加上一个参数"expected"。(参见test翻译 2015-02-05 14:19:19 · 458 阅读 · 0 评论 -
Parameterized tests
Parameterized继承自Suite。Parameterized是在参数上实现了Suite,修饰一个测试类,然后提供多组构造函数的参数用于测试不同场景。import java.util.Arrays;import java.util.Collection;import org.junit.Test;import org.junit.runner.RunWith;impor翻译 2015-02-05 14:24:17 · 1472 阅读 · 0 评论 -
一个简单的JUnit项目
写在前面:后续的所有JUnit文章参考:JUnit主页:http://junit.org/FAQ:http://junit.org/faq.htmlJUnit JavaDoc:http://junit.org/javadoc/latest/index.html探索 JUnit 4.4 新特性:http://www.ibm.com/developerworks/cn/ja原创 2015-02-05 13:44:21 · 1667 阅读 · 0 评论