- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用以下wiremock依赖项:
com.github.tomakehurst独立的wiremock测试2.6.0
当通过选择 Run as JunitTest 从 Eclipse 运行时,一切工作正常。但是当我从 Maven 运行这个程序时,我收到以下错误。
wiremock.com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: com.github.tomakehurst.wiremock.stubbing.StubMapping["request"]->com.github.tomakehurst.wiremock.matching.RequestPattern["bodyPatterns"]->java.util.ArrayList[0])
at com.example.integration.controller.FileUploadControllerIntegrationTest.configureSystemUnderTest(FileUploadControllerIntegrationTest.java:47)
Caused by: java.lang.NullPointerException
at com.example.integration.controller.FileUploadControllerIntegrationTest.configureSystemUnderTest(FileUploadControllerIntegrationTest.java:47)
我有以下代码,该代码抛出错误。
package com.example.integration.controller;
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import java.io.IOException;
import java.io.InputStream;
import org.json.JSONException;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Import;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import static com.example.integration.controller.TestConstants.*;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.common.ConsoleNotifier;
import com.example.Application;
@SpringBootTest(classes = Application.class)
@AutoConfigureMockMvc
@import(TestConfig.class)
@testinstance(Lifecycle.PER_CLASS)
public class FileUploadControllerIntegrationTest extends GenericIntegrationTest {
@Autowired
MockMvc mockMvc;
private WireMockServer wireMockServer;
@BeforeAll
void configureSystemUnderTest() {
this.wireMockServer = new WireMockServer(options().port(8090).notifier(new ConsoleNotifier(true)));
this.wireMockServer.start();
}
@AfterAll
void stopWireMockServer() {
this.wireMockServer.stop();
}
@DisplayName("upload and validate with success")
@Test
public void testUploadFile() throws Exception {
MvcResult result = mockMvc.perform(createRequest(BCM_DEPLOY_SCOPE, "integration-payload/order-type.json"))
.andExpect(status().isCreated()).andReturn();
assertNotNull(result.getResponse().getContentAsString());
}
@DisplayName("upload and validate with validation failed.")
@Test
public void uploadFileWithValidationFail() throws Exception {
mockMvc.perform(createRequest(BCM_DEPLOY_SCOPE, "integration-payload/order-type-with-invalid.json"))
.andExpect(status().isBadRequest())
.andExpect(content().json(populateJsonToString("__files/json/validation-failure-response.json")));
}
/**
* @param endpoint
* @param multipartFile
* @param headers
* @return
* @throws IOException
* @throws JSONException
*/
private MockHttpServletRequestBuilder createRequest(String scope, String payloadFile)
throws IOException, JSONException {
String endpoint = "http://localhost:8080/files/upload";
InputStream fis = new ClassPathResource(payloadFile).getInputStream();
MockMultipartFile multipartFile = new MockMultipartFile("file", fis);
HttpHeaders headers = getHeadersUsingScope(scope);
return multipart(endpoint).file(multipartFile).contentType(MediaType.MULTIPART_FORM_DATA).headers(headers);
}
}
这是我正在使用的映射文件有效负载。
{
"request":{
"method":"POST",
"headers":{
"Authorization":{
"contains":"Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhel9hdHRyIjp7ImFwcGxpY2F0aW9uX25hbWUiOiJSZWdTZXJ2aWNlIiwiYXBwbGljYXRpb25faWQiOiJCQ1MifSwiemlkIjoic2FwLWljYnMiLCJ1c2VyX2lkIjoidGVzdFVzZXIiLCJ1c2VyX25hbWUiOiJ1c2VyIG5hbWUiLCJzY29wZSI6WyJ1YWEtc2VydmljZS1iY3MuQnVzQ29uZmlnbk1hbmFnZUNvbnRlbnQiXSwiZXhwIjoyMTQ3NDgzNjQ3LCJjbGllbnRfaWQiOiJzYi1CQ1NTZXJ2aWNlIiwiZW1haWwiOiJ0ZXN0VXNlckB0ZXN0T3JnIiwiY2lkIjoic2ItQkNTU2VydmljZSJ9.ax5hEOLjmazyXKak9GHnQ3ZswQbL2rkRv2fM6p5rD3NPeUKPO6IaXTImGNCwk3wk6UbkTXuQu8rOQzHugvMLajYwFTpeMuOMjCZ-B8MgrNZq2EKiKe6aQKfzZ6vJZkPWon2UuZWNfKFxbBtglcVi4rL4Z655IWu4zWJ9_r6ruHVybW8eU4hD-4UNdJB2m4pISJw1usqA-_GaMMfQ5j6azx93m1qHuWUYMMmTtq_JefHiA4FueYHh4cBj-aHvTa_PYkG8rg0qY6dvJPw1R9ANKNG5CsQZmzUsY3a9KZX5wgRoSYshePj25mR1GmOzb8PCIDUmyWST-_keF0OnnqJhyQ"
},
"Content-Type":{
"contains":"application/json"
},
"Accept-Language":{
"contains":"en"
}
},
"url":"/busconfig/validate",
"bodyPatterns":[
{
"equalToJson":{
"serviceEntities":{
"OrderType":{
"data":[
{
"Code":"TE",
"BusConfignIsDeleted":false,
"BusConfignValidStart":"/Date(1571356800000)/",
"BusConfignValidEnd":"/Date(1571356800000)/"
},
{
"Code":"YZ",
"BusConfignIsDeleted":false,
"BusConfignValidStart":"/Date(1572739200000)/",
"BusConfignValidEnd":"/Date(1575072000000)/"
}
],
"entityEndPoint":"SalesOrderOrderTypeService/OrderType"
},
"OrderTypeText":{
"data":[
{
"Code":"TE",
"BusConfignIsDeleted":false,
"LanguageCode":"en",
"LanguageName":"English",
"Description":"TE Desc"
},
{
"Code":"YZ",
"BusConfignIsDeleted":false,
"LanguageCode":"en",
"Description":"Validation error code"
}
],
"dependency":[
"OrderType"
],
"entityEndPoint":"SalesOrderOrderTypeService/OrderTypeText"
}
},
"required":[
"OrderType",
"OrderTypeText"
],
"description":"Check",
"changeType":"m"
}
}
]
},
"response":{
"status":200
}
}
最佳答案
2.6.0 已经很古老了。
尝试 2.25.1,并使用 jre8 JAR,除非您使用的是 Java 7。
关于java - 尝试从 mvn clean 安装但与 eclipse JunitTest 一起正常工作时,wiremock 抛出 Nullpointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59245138/
我正在测试一种引发两个不同异常的方法。这是我的标题: @Test (expected = A8InvalidInputException.class) public void testGuessCha
我必须: 编写一个函数,该函数接受字符串数组/列表,计算每个字符串的出现次数,然后返回包含每个唯一字符串及其出现次数的数据结构。例如,给定一个包含以下内容的输入: [“苹果”、“ bat ”、“苹果”
我想编写一个 JUnitTest,它可以确保我的 Karaf 服务器正常启动并且所有(需要的)Bundle 都已安装并处于 Activity 状态。 为此我有一个测试,调用一个辅助方法“assertB
当我从 JavaFXAplication 类调用 WindowController 类的 loadFXMLItemsAgain() 方法时,绝对路径是正确的,但我在 WindowControllerT
我尝试从一个简单的 Java 应用程序启动多个 JUnitTest。因此,我实现了一个带有启动按钮和日志字段的小型 GUI。现在问题来了: 每次我从 Eclipse 启动我的应用程序时一切正常,但如果
我想写一个单元测试。因此我需要 MutableLiveData。我从一个非常基本的设置测试开始,但我无法实例化 MutableLiveData 对象。运行测试时,我始终为 null。我必须 mock
当我尝试在 Junit 中进行第二次测试时遇到一些问题,正如我的问题所述: ABCABCABCABC 最佳答案 您没有访问第二个测试用例中的第六个元素 - 您正在访问第四个元素。查看您的数组索引。 关
我对 Sonar 还很陌生,但不幸的是,最近几天我无法在网上找到任何可以帮助我解决问题的信息。 我正在 Jenkins 服务器上运行 SonarRunner,并尝试插入 jUnit 报告,以便在 So
我的 @ControllerAdvice 带注释的 Controller 如下所示: @ControllerAdvice public class GlobalControllerExceptionH
我的测试遇到问题。我正在使用 java spring 并尝试运行 junit test 来检查我的服务器是否处于 Activity 状态。 这是我正在尝试的测试: @RunWith(SpringJ
我正在使用以下wiremock依赖项: com.github.tomakehurst独立的wiremock测试2.6.0 当通过选择 Run as JunitTest 从 Eclipse 运行时,一切
我是一名优秀的程序员,十分优秀!