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

问题描述 投票:0回答:1

我正在开发一个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));

有什么问题或类似的问题吗?我很感激任何帮助!

非常感谢,Markus

java junit smack
1个回答
0
投票

如果你 看源码 你会发现 reportedServerDomain 是从服务器的流开放标签中提取出来的。在这种情况下,服务器报告的xmpp域与配置的xmpp域不匹配。这通常不应该发生,但我假设这与你运行单元测试的方式有关。或者更准确地说,与测试中使用的远程服务器或模拟服务器有关。如果你启用了smack的调试输出,你会看到流打开的标签和'from'属性及其值。将其与配置的XMPP服务域进行对比,在 ConnectionConfiguration.

© www.soinside.com 2019 - 2024. All rights reserved.