Мне нужна помощь для того, что ниже,
Мне нужно написать Junit, используя PowerMock/Mockito для метода, который вызывает статический метод конечного класса, присутствующего во внешнем банке.
Метод, для которого мне нужно написать тест JUnit:
public class SomeClass {
private PrivateKey privateKeyFromPkcs8(String privateKeyPem) throws IOException {
Reader reader = new StringReader(privateKeyPem);
Section section = PemReader.readFirstSectionAndClose(reader, "PRIVATE KEY");
if (section == null) {
throw new IOException("Invalid PKCS8 data.");
}
byte[] bytes = section.getBase64DecodedBytes();
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(bytes);
try {
KeyFactory keyFactory = SecurityUtils.getRsaKeyFactory();
PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
return privateKey;
} catch (NoSuchAlgorithmException exception) {
} catch (InvalidKeySpecException exception) {
}
throw new IOException("Unexpected exception reading PKCS data");
}
}
В приведенном выше коде PemReader
— конечный класс, а readFirstSectionAndClose(reader, "PRIVATE KEY")
— статический метод в PemReader
.
Я попытался написать тест, показанный ниже, но Section object(section)
отображается как нуль во время отладки. Возможно, вместо макета вызывается реальный код (PemReader.readFirstSectionAndClose(reader, "PRIVATE KEY")
).
@RunWith(PowerMockRunner.class)
@PrepareForTest({SomeClass.class,PemReader.class})
public class SomeClassTest {
@InjectMocks
SomeClass mockSomeClass;
@Mock
private Reader mockReader;
@Mock
private Section mockSection;
@Test
public void testPrivateKeyFromPkcs8() throws Exception {
PowerMockito.mockStatic(PemReader.class);
Mockito.when(PemReader.readFirstSectionAndClose(mockReader, "PRIVATE KEY")).thenReturn(mockSection);
assertNotNull(mockSomeClass.privateKeyFromPkcs8(dummyPrivateKey));
}
}
Пожалуйста, помогите мне написать Junit, используя powermockito/mockito.