gpt4 book ai didi

java - JUnit测试: Unable to unmarshall element

转载 作者:行者123 更新时间:2023-12-01 22:05:51 34 4
gpt4 key购买 nike

在网上尝试了无数解决方案后,我在近一周的时间里遇到了以下困难。具体问题与在我的 JUnit 测试中调用方法 Configuration.getUnmarshallerFactory().getUnmarshaller(Element) 后引发 NullPointerException 相关。

以下是导入到我的项目中的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:Response 字符串: 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);
}

如果你们中的任何人以前遇到过类似的错误,我将非常感谢任何帮助或分享知识。

最佳答案

通过模拟方法 DefaultBootstrap # bootstrap,我猜你已经跳过了必填字段的初始化。查看DefaultBootstrap.bootstrap()的源码,就会明白NPE的原因。

关于java - JUnit测试: Unable to unmarshall element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58688499/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com