モック最終の使用PowerMock学習(F)

モック決勝

mockfinal比較的に言えば、比較的簡単で、比較的簡単な最終修正された方法またはクラスの使用をテストするためにpowermockを使用して、インタフェースの一部、またはサービスコールDAOを呼び出します。

インターフェースと、ここで詳しく説明しませんシーンのために、それは特に簡単です。

サービス層

特定のコードの例は以下の通りです。

パッケージcom.rongrong.powermock.mockfinal; 

/ ** 
 * @author rongrong 
 * @version 1.0 
 * @date 2019年11月27日午後9時29分
 * / 
パブリック クラスStudentFinalService { 

    プライベートStudentFinalDao studentFinalDao。

    公共StudentFinalService(StudentFinalDao studentFinalDao){
         この .studentFinalDao = studentFinalDao。
    } 

    公共 ボイドcreateStudent(学生学生){ 
        studentFinalDao.isInsert(学生)。
    } 
}

dao层

試験をシミュレートするために、私はクラスDAO層を加え、最終的なキーワードの変形例を、このクラスを継承することを許可されていません。

具体的なコードは次のよう:

パッケージcom.rongrong.powermock.mockfinal; 


/ ** 
 * @author rongrong 
 * @version 1.0 
 * @date 2019年11月27日21:20 
 * / 
最後の パブリック クラスStudentFinalDao { 

    パブリックブールisInsert(学生学生){
         スロー 新しい(UnsupportedOperationExceptionが)。
    } 
}

ユニットテスト

powermockとEasymockの違いを区別するためには、まずはEasyMockは、使用量は、興味のある学生をしようとする自分自身で学ぶことができる無視EasyMockテストを採用しましょう。

使用EasyMockテスト

特定のコードの例は以下の通りです。

    @Test
     公共 ボイドtestStudentFinalServiceWithEasyMock(){
         // モック对象 
        StudentFinalDao studentFinalDao = EasyMock.createMock(StudentFinalDao。クラス)。
        学生の学生 = 学生();
        // モック调用、默认返回成功 
        。EasyMock.expect(studentFinalDao.isInsert(学生))andReturn()。
        EasyMock.replay(studentFinalDao)。
        StudentFinalService studentFinalServiceは = 新しいStudentFinalService(studentFinalDaoを)。
        studentFinalService.createStudent(学生)。
        EasyMock.verify(studentFinalDao)。
    }

以下のようにしてみましょうのは、あなたが具体的には、エラーを実行しているでしょう、このユニットテストを実行します。

 

 明らかによるテストが成功せないにつながる、最終的なキーワードの変更、に、我々は再び、最終的な決定的なテストを削除し、そのテストを発見したことができます。

使用PowerMockテスト

特定のコードの例は以下の通りです。

package com.rongrong.powermock.mockfinal;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

/**
 * @author rongrong
 * @version 1.0
 * @date 2019/11/27 22:10
 */
@RunWith(PowerMockRunner.class)
@PrepareForTest(StudentFinalDao.class)
public class TestStudentFinalService {

    @Test
    public void testStudentFinalServiceWithPowerMock(){
        StudentFinalDao studentFinalDao = PowerMockito.mock(StudentFinalDao.class);
        Student student = new Student();
        PowerMockito.when(studentFinalDao.isInsert(student)).thenReturn(true);
        StudentFinalService studentFinalService = new StudentFinalService(studentFinalDao);
        studentFinalService.createStudent(student);
        Mockito.verify(studentFinalDao).isInsert(student);
    }
}

运行上面的单元测试时,会发现运行通过!!

おすすめ

転載: www.cnblogs.com/longronglang/p/11946208.html