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

Spring framework spring-test V5.2.0合并注释搜索策略问题

沈伟
2023-03-14

这里我们在将spring-test升级到5.2.0版后的IT测试中遇到了一个问题。

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
// @WebMvcTest
public class TestedControllerIT {

    private static final ObjectMapper JSON_OBJECT_MAPPER = new ObjectMapper();

    private static final String TOPIC = "topic";

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    private TestedRepository testedRepository;

    @Before
    public void init() {

        testedRepository.deleteAll();
    }

    @Test
    public void shouldReinjectError()
            throws Exception {

        // Given
        LinkedHashMap kafkaMessage = new LinkedHashMap<String, Object>();
        kafkaMessage.put("orderNumber", "orderNumber");
        kafkaMessage.put("recordedDate", 1564652757990L);
        kafkaMessage.put("creationDate", 1564652546217L);

        final RejetTechnique rejetTechnique = RejetTechnique.builder()
                                                            .creationDate(LocalDateTime.now())
                                                            .id("1")
                                                            .offset(12L)
                                                            .topic(TOPIC)
                                                            .stackTrace("")
                                                            .kafkaMessage(kafkaMessage)
                                                            .build();
        testedRepository.save(rejetTechnique);

        // When
        final MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/rejet-technique/reinjection"))
                                        .andExpect(MockMvcResultMatchers.status().is(200))
                                        .andReturn();

        //Then
        assertThat(result.getResponse().getContentAsString()).isEqualTo("{\"status\":\"OK\"}");
        assertThat(testedRepository.findAll().size()).isEqualTo(0);

        final Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

        TopicPartition topicPartition = new TopicPartition(TOPIC, 0);
        ConsumerRecords<String, Object> records;
        try (KafkaConsumer kafkaConsumer = new KafkaConsumer(props)) {
            List<TopicPartition> topics = Collections.singletonList(topicPartition);
            kafkaConsumer.assign(topics);
            kafkaConsumer.seekToEnd(topics);
            long current = kafkaConsumer.position(topicPartition);
            kafkaConsumer.seek(topicPartition, current - 1);

            Duration duration = Duration.of(1000, ChronoUnit.MILLIS);
            records = kafkaConsumer.poll(duration);
        }

        String resultRecordValue = (String) records.records(topicPartition).get(0).value();

        assertThat(resultRecordValue).isEqualTo(convertMessageToJson(kafkaMessage));
    }

    private String convertMessageToJson(final Object message)
            throws JsonProcessingException {

        return JSON_OBJECT_MAPPER.writeValueAsString(message);
    }
}

给出了以下错误:

java.lang.NoClassDefoundError:org.springframework.core.annotation.MergedAnnotations$SearchStrategy

注意:它在Spring-Test的5.2.0.rc1版本之前一直工作得很好。

有人有线索吗?

感谢帮助=)

共有1个答案

屠华辉
2023-03-14

需要在项目中有一致的Spring版本。

我用spring Boot解决了我的问题。

 类似资料:
  • 我是elasticsearch的新手,我想设置索引生命周期策略(从热到热),使用java和spring boot基于时间存储数据。所以我的问题是: 我可以将生命周期策略设置为从自定义密钥(日期)读取吗?如果可以,我该如何执行?密钥是否需要采用某种格式 如果1不可能,是否有办法手动设置@时间戳字段?如果我们用这种格式设置一个键,它会起作用吗 如果1和2不可能,这意味着所有的滚动都应该以编程方式完成,

  • 问题内容: 我想从源HTML中删除这些标签及其内容。 问题答案: 当搜索你基本上使用的地方被定义这个API。但是,注释并不是技术上的元素,因此您可能会感到困惑,但它们仍然是由节点名标识的节点。 让我们看看这可能如何工作:

  • 今天实习下班前搬了工位,不知道为啥,做就是了,好几个人包括组长也要搬 今天收到个新任务,对某个同事两年前写的代码做单元测试,已经上线跑过很久了,没什么问题了 也不知道为啥,做就是了,可能是让我熟悉交易流程吧 六点五十几才回来,19点面试,自我介绍,这次面试挺流畅 20分钟就口干舌燥 之前一直聊论文、实习 向量检索、事件匹配、包分类都讲了 听得还算认真 大概41分钟开始写代码,居然问了力扣上我以前发

  • 记录一下百度算法岗的面试过程,记忆力中的一面面试题如下 1. 针对实习中做的项目进行提问,share-bottom,mmoe,ple等优化点以及存在的问题 2. knn算法中,k取值大容易过拟合,还是容易欠拟合 3. 防止过拟合的手段 4. dropout的原理,使用dropout要注意什么 5. 如何缓解梯度消失问题 6. 编程题: 最大子矩形面积,(记得是leetcode原题,大家可以去看一下

  • 自定义选项将使用默认策略,即简单地覆盖已有值。如果想让自定义选项以自定义逻辑合并,可以向Vue.config.optionMergeStrategies添加一个函数: Vue.config.optionMergeStrategies.myOption = function (toVal, fromVal) { // return mergedVal } 对于大多数对象选项,可以使用meth

  • 我的spring boot项目在实体类中使用hibernate注释。我有自己的通用存储库,我从JPA的EntityManagerFactory获取Hibernate SessionFactory。当创建新表和列时,就会出现此问题。骆驼列是在数据库上用下划线创建的。在中,我将命名策略更改为,但没有什么固定的。