我正在尝试测试一个Spring Boot 1.4.0.M3 MVC切片。控制器是这样的。
@Controller
public class ProductController {
private ProductService productService;
@Autowired
public void setProductService(ProductService productService) {
this.productService = productService;
}
@RequestMapping("product/{id}")
public String showProduct(@PathVariable Integer id, Model model){
model.addAttribute("product", productService.getProductById(id));
return "productshow";
}
}
< code>productshow.html百里香模板的最小化视图如下。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<h2>Product Details</h2>
<div>
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label">Product Id:</label>
<div class="col-sm-10">
<p class="form-control-static" th:text="${product.id}">Product Id</p></div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Description:</label>
<div class="col-sm-10">
<p class="form-control-static" th:text="${product.description}">description</p>
</div>
</div>
</form>
</div>
</div>
</body>
</html>
测试类是这样的。
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = ProductController.class, secure = false)
//@AutoConfigureMockMvc(secure=false)
public class ProductControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private ProductService productServiceMock;
@Test
public void testShowProduct() throws Exception {
Product product1 = new Product();
product1.setId(1);
product1.setDescription("T Shirt");
product1.setPrice(new BigDecimal("18.95"));
product1.setImageUrl("https://example.com/wp-content/uploads/2015/04/spring_framework_guru_shirt-rf412049699c14ba5b68bb1c09182bfa2_8nax2_512.jpg");
when(productServiceMock.getProductById(1)).thenReturn(product1);
MvcResult result = mockMvc.perform(get("/product/{id}/", 1))
.andExpect(status().isOk())
.andReturn();
}
}
在运行测试时,我得到以下错误。
2016-07-03 00:03:29.021 ERROR 6800 --- [ main]
org.thymeleaf.TemplateEngine : [THYMELEAF][main] Exception
processing template "productshow": Exception evaluating SpringEL
expression: "product.id" (productshow:19)
org.springframework.web.util.NestedServletException: Request processing
failed; nested exception is
org.thymeleaf.exceptions.TemplateProcessingException: Exception
evaluating SpringEL expression: "product.id" (productshow:19)
需要帮助来解决这个问题。提前感谢。
将正确的控制器传递给@WebMvcTest
解决了这个问题。传递ProductController.class
后编辑的代码正在工作。
我正在使用和Spy对函数进行单元测试。 这是正在测试的类: 我正在尝试使用Mockito和spy进行测试,因为我不想调用真正的函数只需验证一下即可。该测试称为 这是错误: 我也尝试过这样做,它会导致空指针:
我正在使用Spring的“Spring test mvc”库来测试web控制器。我有一个非常简单的控制器,它返回一个JSON数组。那么在我的测试中我有: 上述测试返回: 为了快速检查我实际得到了什么,我运行了以下测试: 并在 我不确定为什么无法在JSON数组中看到。
我花了相当长的时间试图找出解决我问题的办法,但毫无结果。 无论如何,我有一堆集成测试(在一个与标准测试目录并行的非标准目录testRegression中)。 这些集成测试使用内存数据库中的h2。在生产和测试中,我使用liquibase来模拟模式演变。 我的属性(在应用程序testregion.properties中)如下所示: 我一直得到的错误是: 那么我该如何回避这个问题呢?我的基本理解是,每个
简介 在之前的章节我们实现了一个简单但是功能齐全的web项目、学习了如何使用Gradle来构建和运行这个项目。测试代码是软件开发周期中非常重要的一环,能够确保软件的行为能符合预期。这一章我将讲述如何使用Gradle来组织、配置和执行测试代码,学习如何写单元测试、集成测试和功能测试并把他们集成到项目构建中。 Gradle集成了很多Java和Groovy测试框架,在本章的最后你会用JUnit、Test
本节课将介绍如何使用specs —— 一个Scala行为驱动设计(BDD)框架,来进行测试。 扩展规格 让我们直接开始。 import org.specs._ object ArithmeticSpec extends Specification { "Arithmetic" should { "add two numbers" in { 1 + 1 mustEqual
我正在使用Spring引导 1.3 开发一个 spring 应用程序 我有一个类似这样的MVC请求处理程序: 这是它的集成测试 删除了一些位以留出空间,但请注意顶部的@Transactional注释 它运行和通过没有线: 但是当添加它时,它给出了这个讨厌的异常,这是一个bean验证异常,没有任何数据插入操作(Spring mvc已经处理的验证错误和BindingResault中的结果) 当我在类级