gpt4 book ai didi

java - 在 Maven 的 JUnit 测试用例中使用 Java Smack 4.3.4

转载 作者:行者123 更新时间:2023-12-01 16:44:55 26 4
gpt4 key购买 nike

我正在开发一个 Java 库,其中包含一些基于 xmpp 的服务。对于 XMPP 通信,我使用 Smack 版本 4.3.4。到目前为止,开发没有出现任何问题,我还创建了一些测试例程,这些测试例程都可以毫无错误地运行。在我迁移到 Maven 项目以生成 FatJar 后,我想将可执行测试用例转换为 JUnit 测试。没想到出现了错误,我也无法解释原因。正如我所说,代码可以在 JUnit 之外运行,不会出现任何问题。

下面是简化的测试代码(建立与xmpp服务器的连接):

@Test
public void connect()
{
Builder builder = XMPPTCPConnectionConfiguration.builder();
builder.setSecurityMode(SecurityMode.disabled);
builder.setUsernameAndPassword("iec61850client", "iec61850client");
builder.setPort(5222);
builder.setSendPresence(true);
try
{
builder.setXmppDomain("127.0.0.1");
builder.setHostAddress(InetAddress.getByName("127.0.0.1"));
}
catch (Exception e)
{
e.printStackTrace();
}
XMPPTCPConnectionConfiguration config = builder.build();
XMPPTCPConnection c = new XMPPTCPConnection(config);
c.setReplyTimeout(5000);
try
{
c.connect().login();
}
catch (Exception e)
{
e.printStackTrace();
}
}

这是我收到的错误消息:

Exception in thread "Smack Reader (0)" java.lang.AssertionError
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1154)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$1000(XMPPTCPConnection.java:1092)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:1112)

在 Smack 中,它归结为这个“断言”指令:

assert (config.getXMPPServiceDomain().equals(reportedServerDomain));

知道问题可能是什么或类似的问题吗?我很感激您的帮助!

非常感谢,马库斯

最佳答案

如果您look at the source code您会发现 reportedServerDomain 是从服务器的流打开标记中提取的。在这种情况下,服务器报告的 xmpp 域与配置的域不匹配。这通常不会发生,但我认为这与运行单元测试的方式有关。或者更准确地说,与测试中使用的远程服务器或模拟服务器有关。如果启用 smack 的调试输出,您将看到流打开标记和“from”属性及其值。将此与 ConnectionConfiguration 中配置的 XMPP 服务域进行比较。

关于java - 在 Maven 的 JUnit 测试用例中使用 Java Smack 4.3.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61799833/

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