官术网_书友最值得收藏!

First integration test

As we stated previously, Rust expects all integration tests to live in the tests/ directory. Files within the tests/ directory are compiled as if they are separate binary crates while using our library under test. For the following example, we'll create a new crate by running  cargo new integration_test --lib, with the same function, sum ,as in the previous unit test, but now we have added a tests/ directory, which has an integration test function defined as follows:

// integration_test/tests/sum.rs

use integration_test::sum;

#[test]
fn sum_test() {
assert_eq!(sum(6, 8), 14);
}

We first bring the function sum in scope. Second, we have a function, sum_test , that calls sum and asserts on the return value. When we try to run cargo test, we are presented with the following error:

This error seems reasonable. We want the users of our crate to use the sum function, but in our crate we have it defined as a private function by default. So, after adding the pub modifier before the sum function and running cargo test, our test is green again:

Here's a view of the directory tree of our integration_test example crate:

. 
├── Cargo.lock
├── Cargo.toml
├── src
│ └── lib.rs
└── tests
└── sum.rs

As an example of an integration test, this was very trivial, but the gist of it is that when we write integration tests, we use the crate that's being tested, like any other user of a library would use it.

主站蜘蛛池模板: 曲阳县| 宜州市| 玉林市| 滦平县| 盐池县| 法库县| 吴川市| 深圳市| 奉贤区| 南澳县| 枞阳县| 舒城县| 秀山| 新昌县| 丰宁| 颍上县| 青田县| 吴忠市| 德保县| 吕梁市| 宜良县| 石渠县| 洛浦县| 彰化市| 蒲城县| 沧源| 鲜城| 玉龙| 大竹县| 花垣县| 穆棱市| 藁城市| 吐鲁番市| 五峰| 琼结县| 平武县| 清徐县| 措美县| 电白县| 闸北区| 英超|