当前位置: 首页 > 知识库问答 >
问题:

Artemis activeMQ被盗用,不能用于spring集成测试

逄俊力
2023-03-14
spring.artemis.mode=embedded
spring.artemis.host=localhost
spring.artemis.port=61616
spring.artemis.user=exampleuser
spring.artemis.password=examplepassword
spring.artemis.embedded.topics=exampleTopic,exampleTopic2
jms.queue.destination=exampleQueue
spring.jms.pub-sub-domain=true
<?xml version='1.0'?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:activemq" xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd">
<jms xmlns="urn:activemq:jms">
    <!--the queue used by the example -->
    <queue name="exampleQueue" />
</jms>

<core xmlns="urn:activemq:core">

    <persistence-enabled>false</persistence-enabled>
    <journal-type>NIO</journal-type>

    <!-- Acceptors -->
    <acceptors>
        <acceptor name="netty">tcp://localhost:61616</acceptor>
    </acceptors>

    <!-- Other config -->

    <security-settings>
        <!--security for example queue -->
        <security-setting match="#">
            <permission type="createDurableQueue" roles="example" />
            <permission type="deleteDurableQueue" roles="example" />
            <permission type="createNonDurableQueue" roles="example" />
            <permission type="deleteNonDurableQueue" roles="example" />
            <permission type="consume" roles="example" />
            <permission type="send" roles="example" />
        </security-setting>
    </security-settings>

</core>
</configuration>
@Component
public class JmsProducer {

  @Autowired
  private
  JmsTemplate jmsTemplate;

  @Value("${jms.queue.destination}")
  private String destinationQueue;

  public void send(String msg){
      getJmsTemplate().convertAndSend(destinationQueue, msg);
  }

  public JmsTemplate getJmsTemplate() {
      return jmsTemplate;
  }
 }

下面是集成测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource(locations = {"/application-test.properties","/broker.xml.bak"})
public class outilConverterApplicationTests {

@Autowired
private JmsProducer producer;

@Autowired
private ArtemisProperties artemisProperties;

@Before
public void init(){
    customizer();
}

public ArtemisConfigurationCustomizer customizer() {
    return new ArtemisConfigurationCustomizer() {

        @Override
        public void customize(org.apache.activemq.artemis.core.config.Configuration configuration) {
            try {
                configuration.addAcceptorConfiguration("netty", "tcp://localhost:" + artemisProperties.getPort());

            } catch (Exception e) {
                throw new RuntimeException("Failed to add netty transport acceptor to artemis instance", e);
            }

        }

    };
}

@Test
public void send(){
    producer.send("MyMessage");
    producer.getJmsTemplate().setReceiveTimeout(20_000);
    assertThat(producer.getJmsTemplate().receiveAndConvert("exampleQueue")).isEqualTo("MyMessage");
}
}

Junit Contole跟踪错误:

org.junit.ComparisonFailure: expected:<"MyMessage"> but was:<null>

共有1个答案

长孙阳州
2023-03-14

我将DefaultDestinationName设置为JMSTemplate:

jmsTemplate.setDefaultDestinationName("exampleQueue");

我还更改了application-test.properties:

spring.jms.pub-sub-domain=false

最后,一切都很好。

 类似资料:
  • 带Spring2.1.3。版本,H2集成测试运行良好。 以下是配置 应用程序属性: 配置类: 引导: 将Spring boot版本升级到2.3.12.release.后,上述配置停止工作 我们看到的错误是 原因:组织。h2.jdbc。JdbcSQLSyntaxErrorException:未找到表“USERPROFILE”;SQL语句:插入userProfile。。。。。 当测试用例开始时,下面是

  • 问题内容: 我正在使用dotnet测试对dotnet核心库进行单元测试。我像这样在我的詹金斯奴隶上进行测试。 测试报告如下所示。 我在詹金斯(Jenkins)工作DSL中使用一个块来尝试阅读报告。 詹金斯似乎看到了这份报告。 记录测试结果 但这不是解析结果并将其合并到报告中。我在Jenkins构建仪表板上看不到测试报告。 有任何想法吗? 问题答案: 您可以使用以下管道代码来运行和发布dotnet核

  • 我有一个集成测试来测试Spring Boot服务器的其余endpoint。 我需要创建一些数据(不使用RESTendpoint),所以我尝试使用TestEntityManager,所以我用@SpringBootTest注释了我的测试类。到目前为止还不错,测试启动了Spring Boot上下文,因此我的服务器和测试通过了。 问题:我需要在这个集成测试之外启动Spring Boot服务器,以便为所有集

  • Spring对MockMvc有2个设置: 独立设置 WebApplication Context安装 一般来说,MockMvc用于哪种测试?单元还是集成?或者两者兼而有之? 使用独立设置(运行在Spring应用程序上下文之外)允许您编写单元测试,而使用WebApplication Context设置您可以编写集成测试,这是对的吗?

  • 看起来它与我们在正常项目中的websecurity配置有冲突。这是文件: 我尝试添加来修复上述问题,但最终仍然以结束