Я столкнулся со следующей трудностью почти неделю после того, как попробовал бесчисленное количество решений в сети. Конкретная проблема связана с тем, что NullPointerException
выдается после вызова метода Configuration.getUnmarshallerFactory().getUnmarshaller(Element)
в моем тесте JUnit.
Ниже приведена информация о зависимостях для библиотеки opensaml, импортированной в мой проект:
<dependency>
<groupId>org.opensaml</groupId>
<artifactId>opensaml</artifactId>
<version>2.6.4</version>
</dependency>
Ниже приведена реализация. Во время обычного выполнения программы / проекта он может успешно выполнить и вернуть объект Response
.
private Response a(String text) throws ConfigurationException, SAXException {
DefaultBootstrap.bootstrap();
Schema s = SAMLSchemaBuilder.getSAML11Schema();
BasicParserPool bpp = new BasicParserPool();
bpp.setNamespaceAware(true);
bpp.setIgnoreElementContentWhitespace(true);
bpp.setSchema(schema);
InputStream is= new ByteArrayInputStream(Base64.decode(samlContent).getBytes());
Response res= null;
try {
Document doc = bpp.parse(is);
Element elmt= doc.getDocumentElement();
try {
QName qn = new QName(elmt.getNamespaceURI(), elmt.getLocalName(), elmt.getPrefix());
Unmarshaller um = Configuration.getUnmarshallerFactory().getUnmarshaller(qn); <== NullPointerException thrown at this line during JUnit Test**
samlResponse = (Response) unmarshaller.unmarshall(elmt);
} catch (XMLParserException e) {
logger.debug(e.getMessage());
} catch (UnmarshallingException e) {
logger.debug(e.getMessage());
}
return res;
}
Ниже приведен тест JUnit: (Я получил образец строки ответа samlp: из следующеговеб-сайт: https://www.samltool.com/generic_sso_res.php)
@Test
public void test() throws Exception {
PowerMockito.mockStatic(DefaultBootstrap.class);
PowerMockito.doNothing().when(DefaultBootstrap.class, "bootstrap");
Response result = classInstance.a(Base64.encode(responseStringFromWebsite));
assertNotNull(result);
}
Буду очень признателен за любую помощь или обмен знаниями, если кто-либо из вас уже сталкивался с подобными ошибками.