春季IT测试失败

问题描述

我在我的spring(不是spring boot)应用程序中添加一个新的querydsl控制器方法

@GetMapping("/watcher")
@ResponseBody
public List<Watcher> getWatchers(final Predicate predicate) {
  return repo.findAll(predicate);
}

我还在WebMvcConfigurer实现中添加了以下注释:

@EnableSpringDataWebSupport

应用程序将按预期使用此新端点。我现在想添加一个Spring IT测试来测试这个新功能

这是测试:

@Test
public void test() {
  mvc.perform(get("/watcher"));
}

测试类包含以下注释:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringITConfig.class)
@WebAppConfiguration

同一类中还存在其他测试,并且perform()可以用于这些测试,但这是我第一次将测试添加到querydsl控制器中。

测试失败,并显示No primary or default constructor found for interface com.querydsl.core.types.Predicate

我尝试将注解@EnableSpringDataWebSupport添加到测试中,但没有任何改变。

我想念什么?

谢谢

解决方法

尝试删除您的@ContextConfiguration并将其替换为@SpringApplicationConfiguration(classes = YOUR_MAIN_APP_CLASS),以引导所有需要的querydsl存储库,以及用于谓词类的正确杰克逊映射器。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...