通常,如果我通过以下方式创建进程:
Process proc = new ProcessBuilder("some_long_running_script.py").start();
Run Code Online (Sandbox Code Playgroud)
然后我的java程序完成,我可以看到脚本进程继续运行(如预期的那样)
但是,如果我然后添加代码:
proc.waitFor();
Run Code Online (Sandbox Code Playgroud)
然后在脚本完成之前杀死我的java程序,我可以看到脚本也死了(不像预期的那样).
这似乎是说"waitFor()"以某种方式将脚本进程与我的java进程合并,这是设计的吗?我似乎无法在文档中的任何地方看到它.
这可能是特定于操作系统吗 我在Mac Yosemite上运行
Ktor(kotlin web 框架)有一个很棒的可测试模式,可以将 http 请求包装在单元测试中。他们给出了一个很好的例子,说明如何在此处测试 GET 端点,但是我在使用 http POST 时遇到了问题。
我试过了,但帖子参数似乎没有添加到请求中:
@Test
fun testSomePostThing() = withTestApplication(Application::myModule) {
with(handleRequest(HttpMethod.Post, "/api/v2/processing") {
addHeader("content-type", "application/x-www-form-urlencoded")
addHeader("Accept", "application/json")
body = "param1=cool7¶m2=awesome4"
}) {
assertEquals(HttpStatusCode.OK, response.status())
val resp = mapper.readValue<TriggerResponse>(response.content ?: "")
assertEquals(TriggerResponse("cool7", "awesome4", true), resp)
}
}
Run Code Online (Sandbox Code Playgroud)
谁有想法?