首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在运行单元测试时,RmiRegistry创建了多次

在运行单元测试时,RmiRegistry创建了多次
EN

Stack Overflow用户
提问于 2018-12-17 12:30:11
回答 2查看 710关注 0票数 1

我的Spring应用程序有一个bean:

代码语言:javascript
复制
@Configuration
public class JmxRmiConfig {
    @Value("${jmx.rmi.host:localhost}")
    private String rmiHost;
    @Value("${jmx.rmi.port:1099}")
    private Integer rmiPort;

    @Bean
    public RmiRegistryFactoryBean rmiRegistry() {
        final RmiRegistryFactoryBean rmiRegistryFactoryBean = new RmiRegistryFactoryBean();
        rmiRegistryFactoryBean.setPort(rmiPort);
        rmiRegistryFactoryBean.setAlwaysCreate(true);
        return rmiRegistryFactoryBean;
    }

    @Bean
    @DependsOn("rmiRegistry")
    public ConnectorServerFactoryBean connectorServerFactoryBean() throws Exception {
        final ConnectorServerFactoryBean connectorServerFactoryBean = new ConnectorServerFactoryBean();
        connectorServerFactoryBean.setObjectName("connector:name=rmi");
        connectorServerFactoryBean.setServiceUrl(String.format("service:jmx:rmi://%s:%s/jndi/rmi://%s:%s/jmxrmi", rmiHost, rmiPort, rmiHost, rmiPort));
        return connectorServerFactoryBean;
    }
}

我有两个单元测试,两个单元测试都是这样注释的:

代码语言:javascript
复制
@AutoConfigureMockMvc
@SpringBootTest
@Unroll
class ... extends Specification { ... }

(展开和规范都来自spock.lang)

当我使用maven/surefire一起运行它们时,第二个测试类失败了,出现了以下错误:

创建名称为“org.springframework.beans.factory.BeanCreationException:”的bean (类路径资源uk/ac/prospects/hedd/api/config/JmxRmiConfig.class:调用init方法失败)错误;嵌套异常为java.rmi.server.ExportException:内部错误:已在使用的ObjID

它似乎再次为第二个类重新创建RmiRegistry,而不破坏第一个类。

由于没有@AutoConfigureMockMvc的其他测试运行良好,我的假设是@AutoConfigureMockMvc触发了问题。

我怎样才能让两个测试一起运行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-11 12:37:05

下面的额外配置,为我们解决了这个问题。

代码语言:javascript
复制
                <forkCount>1</forkCount>
                <reuseForks>false</reuseForks>

不理解100%的问题,但我们添加了上面的内容,因为测试套件在一个测试中被模拟但在另一个测试中正确配置的Spring之间出现了混淆。这也解决了RMI问题。我认为这为每个测试提供了一个干净的Spring上下文。

票数 1
EN

Stack Overflow用户

发布于 2019-01-14 10:04:30

我还没有对此进行测试,但认为使用Spring注释@DirtiesContext:https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#spring-testing-annotation-dirtiescontext可能有一个解决方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53815303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档