Попытка получить MessageDigest.getInstance (), чтобы вызвать исключение NoSuchAlgorithmException. Кажется, все правильно, но это не будет исключением. Тестирование аналогичной вещи с помощью DatatypeFactory.newInstance () успешно вызывает DatatypeConfigurationException.
И DatatypeFactory, и MessageDigest являются «публичными абстрактными» классами, а вызываемые методы являются «общедоступными», поэтому я не могу понять, почему MessageDigest.getInstance () не дает мне никаких исключений.
Есть идеи?
Метод тестирования (MessageDigest)
@UtilityClass
public final class HashHelper {
public static void messageDigest() throws NoSuchAlgorithmException {
MessageDigest.getInstance("SHA-256");
}
}
Тестовый класс (MessageDigest)
@RunWith(PowerMockRunner.class)
@PrepareForTest({MessageDigest.class})
public class HashHelperTest {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test
public void shouldThrowNoSuchAlgorithmException() throws NoSuchAlgorithmException {
PowerMockito.mockStatic(MessageDigest.class);
PowerMockito.when(MessageDigest.getInstance(any())).thenThrow(new NoSuchAlgorithmException());
thrown.expect(NoSuchAlgorithmException.class);
HashHelper.messageDigest();
}
}
Тестируемый метод, работает (DatatypeFactory)
@UtilityClass
public final class SoapHelper {
public static void dataTypeInstance() throws DatatypeConfigurationException {
DatatypeFactory.newInstance();
}
}
Тестовый класс, рабочий (DatatypeFactory)
@RunWith(PowerMockRunner.class)
@PrepareForTest({DatatypeFactory.class})
public class SoapHelperTest {
@Rule
public final ExpectedException thrown = ExpectedException.none();
@Test
public void shouldTrhowDatatypeConfigurationException() throws DatatypeConfigurationException {
PowerMockito.mockStatic(DatatypeFactory.class);
PowerMockito.when(DatatypeFactory.newInstance()).thenThrow(new DatatypeConfigurationException());
thrown.expect(DatatypeConfigurationException.class);
SoapHelper.dataTypeInstance();
}
}