2016-04-04 2 views
-2

Я новичок в тестировании Mockito Junit. Это мой основной класс, который я хочу проверить: import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.stereotype.Component;NullPointerException при выполнении теста модульного кода

@Component 
public class IlinqChecksumCalculator { 

    private static Logger DATA_LOADER_CHECKSUM_CALCULATOR_LOGGER = Logger.getLogger(IlinqChecksumCalculator.class); 

    public String calculateCheckSum(String rfsdata) throws IOException { 

     System.out.println(rfsdata); 
     String checkSumValue = null; 
     if (StringUtils.isNotBlank(rfsdata)) { 
      try { 
       // Create MessageDigest object for MD5 
       MessageDigest digest = MessageDigest.getInstance("MD5"); 

       // Update input string in message digest 
       digest.update(rfsdata.getBytes(), 0, rfsdata.getBytes().length); 

       // Converts message digest value in base 16 (hex) 
       checkSumValue = new BigInteger(1, digest.digest()).toString(16); 

      } catch (NoSuchAlgorithmException exception) { 
       DATA_LOADER_CHECKSUM_CALCULATOR_LOGGER.error(
         "Error in determineInputCheckSum() method during calculation of checksum for Input JSON String for ", 
         exception); 
      } 
     } 
     System.out.println("Final checksum value is:" + checkSumValue); 
     return checkSumValue; 
    } 

} 

Это один мой тестовый класс:

import static org.junit.Assert.assertEquals; 
import static org.mockito.Mockito.when; 

import java.io.IOException; 

import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.MockitoAnnotations; 
import org.mockito.runners.MockitoJUnitRunner; 
@RunWith(MockitoJUnitRunner.class) 
public class IlinqChecksumCalculatorTest { 

    private IlinqChecksumCalculator ilinqCheckSum; 

    @Before 
    public void setUp() throws Throwable { 

     MockitoAnnotations.initMocks(this); 
    } 

    @Test 
    public void testCheckSum() throws IOException { 

     when(ilinqCheckSum.calculateCheckSum("abcde")).thenReturn("defgh"); 

     assertEquals("defgh", ilinqCheckSum.calculateCheckSum("abcde")); 

    } 
} 

Я получаю исключения нулевого указателя.

+0

Похоже, что ilinqCheckSum не инициализирован. Попробуйте добавить аннотацию @Mock над частным IlinqChecksumCalculator ilinqCheckSum – Jeet

+0

** Я новичок в тестировании mockito Junit. Это мой основной класс, который я хочу протестировать ** 4 раза? Какой цикл вы используете? для цикла или while? – SpringLearner

ответ

0

Чтобы ответить на ваш вопрос: обрабатывать ilinqCheckSum как выкрик, вы shouuld его аннотируете @Mock. Но здесь вы не должны использовать mockito! Вы хотите протестировать IlinqChecksumCalculator, а не издеваться! Вы должны создать реальный экземпляр этого объекта и при необходимости наложить зависимые выражения.

+0

Я так и сказал, что n m получил эту ошибку java.lang.AbstractMethodError: org.powermock.api.mockito.internal.mockmaker.PowerMockMaker.isTypeMockable (Ljava/lang/Class;) Lorg/mockito/plugins/MockMaker $ TypeMockability; \t на org.mockito.internal.util.MockUtil.typeMockabilityOf (MockUtil.java:26) \t на org.mockito.internal.util.MockCreationValidator.validateType (MockCreationValidator.java:21) \t в org.mockito.internal .creation.MockSettingsImpl.validatedSettings (MockSettingsImpl.java:167) \t в org.mockito.internal.creation.MockSettingsImpl.confirm (MockSettingsIm – priyanka

+0

я не получил ур решение вы можете разработать его – priyanka

+0

спасибо я получил его ....:) – priyanka

0

Издевательский метод calculateCheckSum, который вы не закрываете ни одним кодом в своем модульном тесте. Я думаю, вы не должны использовать Mock здесь. Попробуйте ниже метод тестирования.

public void testCheckSum() throws IOException { 

     String result = ilinqCheckSum.calculateCheckSum("abcde") 
     assertNotNull(result); 

    } 
Смежные вопросы