Ich benutze Netbeans 8.1, Junit und Mockito, um Komponententest für mein Projekt zu schreiben. Hier einige Stücke von meinem CodeJUnit Mockito Mock eine Methode in einer anderen Klasse Fehler
Funktion getestet werden:
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;
}
My Test-Klasse:
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();
}
}
Wie Sie sehen können, nenne ich session.checkACL2(), die definiert ist in einer anderen Klasse, verwende ich Using Mockito to mock a class method inside another class
SessionController session = Mockito.mock(SessionController.class);
doReturn(true).when(session).checkACL2((String) anyObject());
aber es ca zu beheben lls NullPointerException
bei Zeile.
Welchen Junit-Läufer benutzen Sie? Haben Sie Ihre Klasse mit @RunWith (MockitoJUnitRunner.class) oder ähnlichem kommentiert? Können Sie Ihre komplette Klasse inklusive Importanweisungen posten? Sie können andere Funktionen entfernen, die nicht anwendbar sind. – TechCrunch
Ich benutze Netbeans integrierte Junit 4.12. Ich habe vergessen, @RunWith (MockitoJUnitRunner.class) vorher hinzuzufügen, aber nachdem ich es hinzugefügt habe, zeigt es immer noch Fehler: verursacht einen Fehler: java.lang.NullPointerException. Und wenn ich zu Source gehe, bleibt es immer noch bei session.checkACL2() – Jane
Sie brauchen thenReturn nicht zweimal. Können Sie den NullPointerException-Stack-Trace einfügen? – TechCrunch