Ich schreibe Junit mit Mockito für eine Spring @ Komponente-Klasse. Wenn versucht wird, auf das statische Feld von der letzten konstanten Datei zuzugreifen, die Null-Zeiger-Ausnahme auslöst.Ausnahme beim Abrufen von Werten aus Mocked-Objekt mit Mockito
CruserDomainTest
@RunWith(MockitoJUnitRunner.class)
public class CruserTest {
@InjectMocks
CruserDomain eDomain = new CruserDomain();
@Test
public void testGetCruseById() throws Exception,
{
String cCode = "AA";
int employeeId = 21305;
when(
cruseRepository.getTestId(
anyString(), anyInt())).thenReturn(
buildAndReturnList());
when(
payDomain.getRefPay(anyString(),
anyString(), anyString(), anyString()))
.thenReturn(buildPay());
CruseMember expectedResponse = eDomain.getMemberById(
airlineCode, employeeId);
}
CruserDomain
//getting null pointer exception in the below line execution
//while getting the current month
public CruseMember getMemberById(String cCode, int employeeId)
throws Exception {
//Some code //
if (contractMonth.getType().equals(
CruseConstant.CURRENT_MONTH)) {
currentMonthStartDate = cMonth.getStartDate();
} else if (contractMonth.getType().equals(
CruseConstant.OTHER_MONTH)) {
nextMonthStartDate = cMonth.getStartDate();
}
CruseConstant:
public final class CruseConstant {
public static final String CURRENT_MONTH = "C";
public static final String OTHER_MONTH = "O";
}
ich mit ReflectionTestutils versucht, aber Ausnahme während junit beginnt zu werfen.
Helfen Sie mir bei der Suche nach finalen statischen Klassenvariablen in der injectMocked-Klasse.
'@ InjectMocks' ist bekannt, dass es im Hintergrund fehlschlägt, wenn keine Abhängigkeit injiziert werden kann. Haben Sie versucht, eine '@ Before'-Methode in Ihrem Test zu implementieren und die Abhängigkeiten selbst zu verfälschen? –
Ich habe @Before Reflection Test utils benutzt, um diese Werte zu setzen, aber Fehler zu bekommen. Gibt es einen anderen Weg als Reflection testutil, um Werte für diese Konstanten zu setzen. – Ramkumar
Statiken sollten nicht mit Mockito verspottet werden, und Sie brauchen Reflection nicht zu benutzen Setzen Sie die Konstanten, lassen Sie die Methode nur die reellen Konstanten verwenden. –