Java NoClassDefFoundError:org/springframework/web/bind/MissingMatrixVariableException——测试存储库/接口

Java NoClassDefFoundError:org/springframework/web/bind/MissingMatrixVariableException——测试存储库/接口,java,unit-testing,junit,mockito,repository,Java,Unit Testing,Junit,Mockito,Repository,问题是:在尝试测试存储库接口时,我一直在stacktrace中遇到MissingMatrixVariableException。我有5个,希望增加我的总体代码覆盖率 好一点,我是个笨蛋。在做了我自己的研究之后,我试着去嘲笑,这让我有点不知所措 我尝试了模拟存储库并实例化了我的MockMvc MockMvc变量。我已经设置了MockitoAnnotations.initMocks(this) 我运行了测试,对于我所做的任何测试,我都遇到了MissingMatrixVariableException

问题是:在尝试测试存储库接口时,我一直在stacktrace中遇到MissingMatrixVariableException。我有5个,希望增加我的总体代码覆盖率

好一点,我是个笨蛋。在做了我自己的研究之后,我试着去嘲笑,这让我有点不知所措

我尝试了模拟存储库并实例化了我的MockMvc MockMvc变量。我已经设置了MockitoAnnotations.initMocks(this)

我运行了测试,对于我所做的任何测试,我都遇到了MissingMatrixVariableException错误

在测试存储库时,我在Stack/Google搜索中没有发现此异常

package example.repository;

import example.model.Metrics;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

@EnableJpaRepositories
public interface MetricsRepository extends JpaRepository<Metrics, Long> {
    List<Metrics>findByDate(String date);

    @Modifying
    @Transactional
    @Query(nativeQuery = true, value = "delete from backlogreport.metrics where date = ?1")
    void deleteDate(String date);
}
我试图实现的是,当mockMvc设置好后,我输入接受字符串(“2019-04-01”)的日期和期限(“20天”)


然后我执行我的urL“get”并期望状态为ok,然后打印。。。除了我一直在打这个MissingMatrixVariableException。有什么想法吗?

NoClassDefFoundError
几乎总是表示您的项目中有混合版本(在本例中为Spring)。@chrylis您知道我可以查看哪个部门吗?我应该关注重复版本还是特定的spring dep?您可能认为IntelliJ足够聪明,可以告诉用户存在冲突的dep…最好在这里阅读这种类型的错误原因:文档状态“从URL提取的矩阵变量中不存在@RequestMapping方法的方法参数中预期的矩阵变量。”此异常的根本原因可能是您在调用“mockMvc.perform(get”(“/report/2019-04-01”)时没有设置所有请求参数“
NoClassDefFoundError
几乎总是表示您有混合版本(在本例中为Spring)在您的项目中。@chrylis您知道我可以查看哪个dep吗?我应该关注重复版本还是特定的spring dep?您可能认为IntelliJ足够聪明,可以告诉用户存在冲突的dep…最好在此处阅读此类错误原因:文档状态“从URL提取的矩阵变量中不存在@RequestMapping方法的方法参数中预期的矩阵变量。”此异常的根本原因可能是您在调用“mockMvc.perform(get)(“/report/2019-04-01”)时没有设置所有请求参数。”
package example.repository;

import example.controller.RestApiController;
import example.model.Metrics;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.test.web.servlet.setup.StandaloneMockMvcBuilder;
import java.util.Collections;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;

public class MetricsRepositoryTest {

    @InjectMocks
    private RestApiController restApiController;

    @Mock
    private MetricsRepository MetricsRepository;

    private MockMvc mockMvc;

    @Before
    public void setUp(){
        MockitoAnnotations.initMocks(this);
        mockMvc = MockMvcBuilders.standaloneSetup(restApiController).build();

    }

    @Test
    public void shouldGetByDate() throws Exception {
        Metrics Metrics = new Metrics();
        Metrics.setDate("2019-04-01");
        Metrics.setAgeLength("20 days old");
        when(MetricsRepository.findAll())
                .thenReturn(Collections.singletonList(Metrics));

        mockMvc.perform(get("/report/2019-04-01"))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(print());
    }
}