HTTP服务器在旧服务器关闭后启动时进行测试时发生混乱

时间:2015-12-07 21:26:43

标签: testing rust iron

我写了一些测试,每个函数都启动iron的HTTP服务器并在测试完成后关闭它:

extern crate iron;

use iron::prelude::*;

fn hello_world(_: &mut Request) -> IronResult<Response> {
    Ok(Response::with((iron::status::Ok, "Hello World")))
}

#[test]
fn test1() {
    let mut server = Iron::new(hello_world).http("localhost:3000").unwrap();
    server.close().unwrap();
}

#[test]
fn test2() {
    let mut server = Iron::new(hello_world).http("localhost:3000").unwrap();
    server.close().unwrap();
}

cargo test我有:

Running target/debug/lib-f236975fe924352b

running 2 tests
test test1 ... ok
test test2 ... FAILED

failures:

---- test2 stdout ----
thread 'test2' panicked at 'called `Result::unwrap()` on an `Err` value: Io(Error { repr: Os { code: 98, message: "Address already in use" } })', ../src/libcore/result.rs:736



failures:
test2

test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured

在第二次测试开始时,端口似乎仍在使用。

1 个答案:

答案 0 :(得分:3)

Rust的测试运行器默认是并行的,所以是的,我希望这会发生。我会为每个测试选择一个不同的端口号,至少要开始,因为它很容易。