JUnit4和Mockito(未完待续)

把学习到的零碎的东西做一个总结,方便系统的学习和使用。以下内容均为转载,已注明出处。

一、JUnit4

    1、idea中的JUnit4的安装与配置

          转载自https://blog.csdn.net/hanchao5272/article/details/79197989

    2、Junit4常用注解与方法

          转载自https://blog.csdn.net/luvinahlc/article/details/10442743
         ①    @Before:初始化方法,在任何一个测试执行之前必须执行的代码。 跟3.X中的setUp()方法具有相同功能。
         ②    @After:释放资源,在任何测试执行之后需要进行的收尾工作。跟3.x中的 tearDown ()方法具有相同功能。
         ③    @Test:测试方法,表明这是一个测试方法。在Junit中将会自动被执行。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。

                该annotation可以测试期望异常和超时时间,如@Test(timeout = 100),我们给测试函数设定一个执行时间,超过了这个时间(100毫秒),它们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可以发现这些Bug了。

                同时还可以测试期望的异常,例如:@Test(expected=IllegalArgumentException.class)
        ④    @Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。
        ⑤    @BeforeClass:针对所有测试,在所有测试方法执行前执行一次,且必须为public static void;此annotataion为4.x新增功能。
        ⑥    @AfterClass:针对所有测试,在所有测试方法执行结束后执行一次,且必须为public static void;此annotataion为4.x新增功能。

       本文图片转载自:https://www.cnblogs.com/libingbin/p/6007203.html

3、Junit编程规范

        转载自https://blog.csdn.net/luvinahlc/article/details/10442743
       ①    单元测试代码应位于单独的Source Folder下。
       ②    测试类应跟被测试类位于统一package下
       ③    选择有意义的测试方法名
       ④    保持测试的独立性
       ⑤    为暂未实现的测试代码抛出失败(fail)或忽略(ignore)
       ⑥    在调用断言(assert)方法时给出失败的原因

 

二、Mockito

Mock:用一个自己创建的假对象来替换真是的对象,达到预期效果,并不会对原类,原对象产生改变。

           模拟外部依赖对象

Mockito:①验证某实例的某方法在测试中是否被调用、被调用了多少次。

                ②跳过某实例的某方法的实际执行内容,直接返回设置的结果。

1、一般使用Mockito的步骤:

       转载自:https://www.jianshu.com/p/eae0187900f8

      (1)模拟任何外部依赖并将这些模拟对象插入测试代码中

      (2)执行测试中的代码

      (3)验证代码是否按照预期执行

2、使用Mockito

       参考自:https://www.cnblogs.com/Ming8006/p/6297333.html#c1.1

       (1)添加依赖与引用

//添加maven依赖
     <dependency>
          <groupId>org.mockito</groupId>
          <artifactId>mockito-all</artifactId>
          <version>1.9.5</version>
          <scope>test</scope>
      </dependency>

//添加junit依赖
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
      </dependency>

//添加引用
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;

   (2)模拟对象

        以下转载自:https://www.cnblogs.com/zishi/p/6760272.html

        创建 Mock 对象的语法为 mock(class or interface)。

   (3)设置对象调用的预期返回值

        通过 Mockito.when(mock.someMethod()).thenReturn(value) 来设定 Mock 对象某个方法调用时的返回值。

        通过 Mockito.when(mock.someMethod()).thenThrow(new RuntimeException) 的方式来设定当调用某个方法时抛出的异常。

   (4)验证被测试类方法

        在 Mockito 中验证 Mock 对象交互行为的方法是 Mockito.verify(mock).someMethod(…)。

        最后 Assert() 验证返回值是否和预期一样。

三、@InjectMocks

        转载自:https://www.jianshu.com/p/bb705a56f620

             @Mock:创建一个Mock。

            @InjectMocks:创建一个实例,其余用@Mock注解创建的mock将被注入到用该实例中。

四、PowerMockito

1、mock viod方法

class Hi {  
    public void mockParentMethod() {  
        System.out.println("mockSuperMethod Hi");  
    }  
}  

class Hello extends Hi {  
    private Kitty kitty;  
  
    public Hello() {}  
      
    public void mockVoidMethod() {  
        kitty.say3();  
        System.out.println("partialMock");  
    }  
  
    public Kitty getKitty() {  
        return kitty;  
    }  
  
    public void setKitty(Kitty kitty) {  
        this.kitty = kitty;  
    }  
      
}  

@Test  
public void testMockVoidMethod() {  
    Hello hello = new Hello();  
    Kitty kitty = PowerMockito.mock(Kitty.class);  
    hello.setKitty(kitty);  
    PowerMockito.doNothing().when(kitty).say3();  
    hello.mockVoidMethod();  
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值