Junit单元测试的基本用法

  JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

junit3和junit4区别

1.在junit3中,如果某个类需要测试类,则必须继承TesrCase,如果某个方法需要是测试方法,必须让这个方法通过TestXX开头,在junit3中如果希望某个方法在运行之前运行某个初始化方法,这个方法的名称必须是setUp,如果希望在某个测试方法运行之后运行某个释放资源的方法,这个方法的名称必须是TearDown

2.在junit4中 ,一个pojo类就是一个测试类,测试方法通过@Test来标识,初始化方法通过@Before来标识,释放资源的方法通过@After来标识.但是为力junit4中可以在junit3中使用,习惯于把初始方法命名为setUp,释放资源的方法命名为TearDown,测试方法也同样以test开头

eclipse中如何创建Junit

1、导入junit 4.12 的依赖包

2、创建junit类

  

   

   

JUnit的一些注意事项:

  • 测试方法必须使用@Test修饰
  • 测试方法必须使用public void进行修饰,不能带参数
  • 一般使用单元测试会新建一个test目录存放测试代码,在生产部署的时候只需要将test目录下代码删除即可
  • 测试代码的包应该和被测试代码包结构保持一致
  • 测试单元中的每个方法必须可以独立测试,方法间不能有任何依赖
  • 测试类一般使用Test作为类名的后缀
  • 测试方法使一般用test作为方法名的前缀

测试失败说明:

  • Failure:一般是由于测试结果和预期结果不一致引发的,表示测试的这个点发现了问题
  • error:是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中隐藏的bug

一些常用注解

  • @Test:将一个普通方法修饰成一个测试方法
    • @Test(excepted=xx.class): xx.class表示异常类,表示测试的方法抛出此异常时,认为是正常的测试通过的
    • @Test(timeout=毫秒数) :测试方法执行时间是否符合预期
  • @BeforeClass: 会在所有的方法执行前被执行,static方法
  • @AfterClass:会在所有的方法执行之后进行执行,static方法
  • @Before:会在每一个测试方法被运行前执行一次
  • @After:会在每一个测试方法运行后被执行一次
  • @Ignore:所修饰的测试方法会被测试运行器忽略
  • @RunWith:可以更改测试运行器org.junit.runner.Runner
  • Parameters:参数化注解

转载:https://www.cnblogs.com/qiyexue/p/6822791.html

Junit的各种断言

 其中方法:

  public static void assertEquals(Object[] expected, Object[] actual)
  public static void assertEquals(String message, Object[] expected, Object[] actual)

是JUnit 4 为比较数组添加的两个 assert() 方法.这两个方法以最直接的方式比较数组:如果数组长度相同,且每个对应的元素相同,则两个数组相等,否则不相等。数组为空的情况也作了考虑。 .

常用断言介绍:

  1. assertEquals([String message],Object target,Object result)  target与result不相等,中断测试方法,输出message
    assertEquals(a, b) 测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具有equal方法)
    assertEquals断言两个对象相等,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
      例如计算器加法功能的测试可以使用一下验证:
      Assert.assertEquals(0,result);

  2. assertTrue/False([String message],Boolean result) Result为 false/true,中断测试方法,输出message
    assertTrue 断言条件为真,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
    assertFalse 断言条件为假,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
    assertFalse(a) 测试a是否为false(假),a是一个Boolean数值;

  3. assertNotNull/Null([String message],Obejct result )  Restult == null/result!=null,中断测试方法,输出message
    assertNull   断言对象为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
    assertNotNull 断言对象不为null,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
    assertNotNull(a) 测试a是否非空,a是一个对象或者null;

  4.assertSame/NotSame(Object target,Object result) Traget与result 不指向/指向 同一内存地址(实例),中断测试方法,输出message
    assertSame 断言两个引用指向同一个对象,若不满足,方法抛出带有相应信息AssertionFailedError异常。
    assertNotSame 断言两个引用指向不同对象,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
    assertNotSame(a, b) 测试a和b是否没有都引用同一个对象;

  5. fail([String message])  中断测试方法,输出message
    Fail  让测试失败,并给出指定信息

转载:https://www.iteye.com/blog/ryxxlong-716428

代码:

方法类:

public class Calc {
    //相加
    public int add(int a,int b) {
        return a+b;
    }
    //相乘
    public int ride(int a,int b) {
        return a*b;
    }
}

 junit测试类:

public class TestCalc {
    
    private Calc c;
    @Before
    public void setUp() throws Exception {
        c = new Calc();
        System.out.println("直接加载");
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("直接结束了");
    }
    @Test
    public void testAdd() {
        int sum = c.add(2, 2);
        //断言值等于4
        Assert.assertEquals(4, sum);
    }
    @Test
    public void testRide() {
        int sum = c.ride(2, 4);
        //断言值不等于8
        Assert.assertNotEquals(8, sum);
    }

 

posted @ 2020-06-08 20:09  64Byte  阅读(554)  评论(0编辑  收藏  举报