package lesson3;
import common.Account;
import common.AccountDao;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class _1_MockByRunnerTest {
@Test
public void testMock() {
// AccountDao accountDao = mock(AccountDao.class);
AccountDao accountDao = mock(AccountDao.class, Mockito.RETURNS_SMART_NULLS);
Account account = accountDao.getAccount("x", "x");
System.out.println(account);
}
}
@RunWith(MockitoJUnitRunner.class)
package lesson3;
import common.Account;
import common.AccountDao;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class _2_MockByAnnotationTest {
/**
* set param on annotation, replace on mock() method
*/
@Mock(answer = Answers.RETURNS_SMART_NULLS)
private AccountDao accountDao;
/**
* replace @RunWith(MockitoJUnitRunner.class)
*/
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testMock() {
Account account = accountDao.getAccount("x", "x");
System.out.println(account);
}
}
MockitoAnnotations.initMocks(this)
package lesson3;
import common.Account;
import common.AccountDao;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
public class _3_MockByRuleTest {
@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();
@Mock
AccountDao accountDao;
@Test
public void testMock() {
Account account = accountDao.getAccount("x", "x");
System.out.println(account);
}
}
@Rule
package lesson3;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class _4_DeepMockTest {
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
/**
* without "answer = Answers.RETURNS_DEEP_STUBS", lesson3.foo() will throw NullPointException
*/
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
Lesson3Service lesson3Service;
@Test
public void testDeepMock() {
lesson3Service.getLesson3().foo();
Lesson3 lesson3 = lesson3Service.getLesson3();
String foo = lesson3.foo();
Assert.assertEquals(true, lesson3 != null);
Assert.assertEquals(true, foo == null);
}
}
DeepMock
public class Lesson3 {
public String foo() {
throw new RuntimeException();
}
}
Lesson3
package lesson3;
public class Lesson3Service {
public Lesson3 getLesson3() {
throw new RuntimeException();
}
}
Lesson3Service