package com.weichi.erp.service.Impl;
import com.weichi.erp.BaseTest;
import com.weichi.erp.domain.Book;
import mockit.Deencapsulation;
import mockit.Expectations;
import mockit.Mocked;
import mockit.Tested;
import mockit.integration.junit4.JMockit;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.springframework.boot.test.context.SpringBootTest;
/**单测研究
* Created by Wewon on 2021-03-20.
*/
@RunWith(JMockit.class)// 指定单元测试的执行类为JMockit.class,这样不用初始化springboot,执行更快
public class BookServiceTest extends BaseTest {
@Tested
BookService bookService ;
/**
* mock掉被测试类中的私有方法
* @throws Exception
*/
@Test
public void getSerNameTest001() throws Exception{
new Expectations(BookService.class) {{
Deencapsulation.invoke(bookService, "getSerName");
result = "琼华";
}};
String res = bookService.getLibraryInfo();
Assert.assertEquals(res, "Welcome to library!琼华");
}
/**
* mock连续调用方法
* @throws Exception
*/
@Test
public void displayBookTest001() throws Exception{
Book book = new Book();
// BookService 被Expectations模拟,该类下所有方法断点都失效
new Expectations(BookService.class) {{
bookService.getLibName();
result = book;
}};
new Expectations(Book.class) {{
book.getName();
result = "456";
}};
String res = bookService.displayBook();
Assert.assertEquals(res, "456");
}
}