Я использую Netbeans 8.1, Junit и Mockito для написания модульного теста для моего проекта. Вот некоторые части моего кодаJUnit Mockito mock one method in another class Ошибка
Для обследованы функции:
public Map<String, String> getAllUsers() {
if (allUsers == null) {
if (session.checkACL2("DonateBookPrivilegeLevel") || session.checkACL2("ManageUserPrivilegeLevel")) {
Iterator<User> it = userFc.findAll().iterator();
System.out.println("PC::enum()");
allUsers = new HashMap<String, String>();
while (it.hasNext()) {
User item = it.next();
allUsers.put(item.getName(), item.getUserId().toString());
}
}
}
return allUsers;
}
Мой класс Тест:
package com.controller;
import com.entities.User;
import com.jsfc.util.JsfUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.faces.event.ActionEvent;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.runner.RunWith;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Matchers.anyString;
import org.mockito.Mock;
import org.mockito.Mockito;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import org.mockito.MockitoAnnotations;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class PersonalCenterControllerTest {
public PersonalCenterControllerTest() {
}
@BeforeClass
public static void setUpClass() {
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@After
public void tearDown() {
}
/**
* Test of getAllUsers method, of class PersonalCenterController.
*/
@Test
public void testGetAllUsers() {
System.out.println("getAllUsers");
PersonalCenterController pcController = new PersonalCenterController();
SessionController session = Mockito.mock(SessionController.class);
when(session.checkACL2(anyString())).thenReturn(true).thenReturn(true);
Map<String,String> userMap = null;
userMap = pcController.getAllUsers();
}
}
Как вы можете видеть, я называю session.checkACL2(), который определяется в другом классе, я использую Using Mockito to mock a class method inside another class исправить
SessionController session = Mockito.mock(SessionController.class);
doReturn(true).when(session).checkACL2((String) anyObject());
но ча lls NullPointerException
на линии if.
Какой ты хочешь работать? Вы аннотировали свой класс, используя @RunWith (MockitoJUnitRunner.class) или что-то подобное? Можете ли вы опубликовать свой полный класс, включая импортные заявления? Вы можете удалить другие функции, которые не применимы. – TechCrunch
Я использую Netbeans интегрированный junit 4.12. Я забыл добавить @RunWith (MockitoJUnitRunner.class) раньше, но после того, как я его добавлю, он все еще показывает ошибку: вызвала ошибку: java.lang.NullPointerException. И когда я перехожу к Источнику, он все еще застрял в session.checkACL2() – Jane
Вам не нужно, а затем повторить дважды. Можете ли вы вставить трассировку стека NullPointerException? – TechCrunch