我使用spring-boot(v2 M3)和Spring-WebFlux进行一个项目。在编写一个特性时,我看到我的微服务返回一个HTTP200状态代码,同时在流量中返回一个错误。
@RestController
@RequestMapping(value = "/test")
public class TestController {
@GetMapping(value = "/errors")
public Flux<Object> getErrors() {
return Flux.error(new RuntimeException("test"));
}
}
使用一个简单的异常处理程序:
@ControllerAdvice
public class TestExceptionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(TestExceptionHandler.class);
@ExceptionHandler(value = { RuntimeException.class })
public ResponseEntity<String> handleServerError(final RuntimeException e) {
LOGGER.error(e.getMessage(), e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
我在集成测试中用webTestClient测试结果:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource("classpath:test.properties")
public class TestErrorsIT {
@Autowired
private WebTestClient webTestClient;
@Test
public void getErrors() {
this.webTestClient.get().uri("/test/errors").accept(MediaType.APPLICATION_STREAM_JSON).exchange().expectStatus()
.is5xxServerError();
}
}
结果,我的测试失败了,因为返回错误通量的控制器返回的是200状态码,而不是503状态码(异常日志“test”在我的控制台中被很好地跟踪)。你知道为什么吗?
在本例中,应用程序依赖于spring-cloud-starter-eureka
,它本身依赖于spring-boot-starter-web
。
将spring-boot-starter-web
添加到Spring Boot应用程序将使其变成Spring MVC应用程序,这解释了这种行为。
我读过几篇文章说,如果您使用unittest.main()调用unittests,如果失败,它们应该使用失败代码退出。我使用以下命令调用unittests:。我使用的是Python 3.6.6。unittest的示例如下所示:
我正在使用Java和Spring Boot开发一个Web应用程序。具体来说,我正在审查其他开发人员编写的一些代码。我使用Postman对我的应用程序进行HTTP调用。有些情况下,我的应用程序需要通知调用方某些情况。在这个例子中,应用程序的开发人员向调用者抛出了一个,以防出现。 在这段代码中,我有很多其他非常类似的情况,我必须做以下事情:我必须替换代码,以便它抛出异常,使调用方理解(以便我可以通过P
问题内容: 这是另一个有争议的主题,但是这次我只在寻找简单且记录在案的答案。场景: 让我们假设以下方法: 问题: 1.您如何建议改进这种归还某些属性的狗的技术? 2. rs.next()对于空的ResultSet将返回false,或者将生成异常,例如: 字符串str = null; System.out.println(str.toString()); 3.如果在从ResultSet的当前行初始化
我的代码: 我有一个问题即使它存在,也找不到该元素。我用汤仔细检查了元素是否确实存在,并且它按照输出进行操作。 输出: 我有一个遍历每个应用程序域的循环(包含来自每个的数据)但是,它在大多数情况下都会找到并单击元素,但对于某些元素却没有,我不知道为什么。 这是站点html。有许多,每个都包含不同的,我需要单击它
当我试图在Eclipse中运行一个应用程序时,它被挂起,15分钟后显示以下错误。我从过去的两个月开始工作Eclipse,到现在它工作得很好。我正在使用Eclipse Indigo。
问题内容: 考虑以下代码(特别是Java): 其中定义为: 基本上,仅在满足某些条件(不是灾难性的,但确实需要以某种方式提高条件)的情况下存在,这样才会知道会错误退出。 在这种情况下,您是否发现可以使用例外来控制流程?还是这是代码气味?如果是这样,您将如何重构呢? 问题答案: 这完全取决于错误条件是什么,以及方法的工作是什么。如果返回是为调用函数处理该错误的有效方法,那为什么会出错呢? 但是,通常