JUnit笔记一

单元测试
1.(列举一项不用单元测试的失败案例)说明什么是单元测试(单元测试是开发者编写的一小段代码,用于检验代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试适用于判断某个),再说明执行单元测试,是为了证明某段代码的行为确实和开发者所期望的一致。执行单元测试也是为了对所有单独部分的行为建立信心,确信它们都和我们的期望一致。
2.在实际编程中该怎样做?a.需要使用一些断言(assertion);b.需要计划你的测试(其中包含了寻找边界条件,断言期望结果)
3.使用JUnit编写单元测试。首先,需要遵循一些命名规范:如有个creatAccount函数(方法),那么你的测试函数命名也许就该是testCreatAccount之类的。测试代码必须要做的以下几件事情:a.准备测试所需要的各种条件(创建所有必须的对象,分配必要的资源等等)。b.调用要测试的方法。c.验证被测试方法的行为和期望的是否一致。d.完成后清理各种资源。
4.JUnit中的各种断言:assertEquals、assertNull、assertSame、assertTrue、fail
5.JUnit框架,使用框架的最小要求。
例1:
import junit.framework.*;
public class TestSimple extends TestCase{
      public TestSimple(String name){
            super(name);
      }
      public void testVoid(){
            assertEquals(2,1+1);
      }
}
以上是JUnit 4以前的做法,在JUnit 4中我们可以用JAVA 5的新特性,元数据注释来使用JUnit:(注意在用新的框架时,JAVA的源代码级别必须设置在JAVA 5以上)
例2:
import static org.junit.Assert.*;
import org.junit.Test;
public class TestSimple{
      @Test
      public void testVoid(){
            assertEquals(2,1+1);
      }
}
6.正因为JAVA语言的特性。一个测试类可以包含一些测试方法;每个测试方法包含一个或多个断言语句。一个测试类也能调用其他测试类:单独的类、包、甚至完整的系统。这些可以通过创建test suite来取得。
例3:
import junit.framework.*;
public class TestClassOne extends TestCase{
      public TestClassOne(String method){
            super(method);
      }
      public void testAddition(){
            assertEquals(4,2+2);
      }
      public void testSubtraction(){
            assertEquals(0,2-2);
      }
}
默认的,因为使用了Java的反射机制,将会运行testAddition与testSubtraction方法。
例4:
import static org.junit.Assert.*;
import org.junit.Test;
public class TestClassOne{
      public TestClassOne(String method){
            super(method);
      }
      @Test
      public void testAddition(){
            assertEquals(4,2+2);
      }
      @Test
      public void testSubtraction(){
            assertEquals(0,2-2);
      }
      public static Test suite(){
            TestSuite suite = new TestSuite();
            suite.addTest(new TestClassOne("testAddition"));
            return suite;
      }
}
在例4中,通过给构造方法传递String型参数,使得TestCase返回一个对命名测试方法的引用。有时,我们可能希望例3与例4中的事情同时发生,那么我们可以创建一个更高级别的测试来组合两个测试类(对于一个测试类也可以,就像上面的TestClassOne)
例5:
import junit.framework.*;
public class TestClassTop extends TestCase{
      public TestClassTop(String method){
            super(method);
      }
      static public Test suite(){
            TestSuite suite = new TestSuite();
            suite.addTest(TestClassOne.suite());
            suite.addTestSuite(TestClassOne.class);
            return suite;
      }
}
7.Per-method与Per-suite
8.JUnit与异常
9.Right-BICEP
      Right— 结果是否正确呢?怎样测试?使用数据文件,注意:测试前多注意一下数据文件,往往人为计算的数据比测试代码更可能是错误的。
      B— 边界条件。寻找边界条件是最有价值的工作。一般需要考虑的条件:
            a.完全伪造或者不一致的输入数据。
            b.格式错误的数据,例如没有顶层域名的邮件地址。
            c.空值或者不完整值。
            d.一些与意料中的合理值相去甚远的数值。
            e.要求的是一个不允许重复的list,但是传入的是一个存在重复数值的list。
            f.如果要求的是一个有序的list,但是传入的是一个无序的list,或者相反。
            g.事件到达的次序是错误的,或者碰巧和期望的次序不一致。
      I— 检查反向关联。如:通过计算x的平方根来验证s*s=x的算法。
      C— 使用其他方法实现交叉检查。结果唯一而算法多样。
      E— 强制产生错误条件。
      P— 性能特性。
10.考虑边界条件(CORRECT)
      边界条件的考虑是单元测试中最重要的一步。
      C— 一致性(Conformance)
      O— 有序性(Ordering)
      R— 区间性(Range)
      R— 引用/耦合性(Reference)
      E— 存在性(Existence)
      C— 基数性(Cardinality)
      T— 时间性(Time),绝对或者相对的。
11.Mock对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值