Java NoClassDefFoundError:org/springframework/web/bind/MissingMatrixVariableException——测试存储库/接口
问题是:在尝试测试存储库接口时,我一直在stacktrace中遇到MissingMatrixVariableException。我有5个,希望增加我的总体代码覆盖率 好一点,我是个笨蛋。在做了我自己的研究之后,我试着去嘲笑,这让我有点不知所措 我尝试了模拟存储库并实例化了我的MockMvc MockMvc变量。我已经设置了MockitoAnnotations.initMocks(this) 我运行了测试,对于我所做的任何测试,我都遇到了MissingMatrixVariableException错误 在测试存储库时,我在Stack/Google搜索中没有发现此异常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
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());
}
}