테스트
전반적으로 Rust가 제공하는 기능은 비교적 단순하지만 충분히 포괄적이며 Test-Driven 개발 방식에 적합합니다. 아쉽게도 제가 일하는 곳은 대부분 버전 반복에 필요한 인력이 부족하고 요구사항이 너무 많아 Test-Driven 개발 방식을 적용하기 어렵습니다. 테스트할 시간이 생긴 뒤 단위 테스트와 통합 테스트를 보완하려 하면 매우 번거롭습니다.
이해
- 기본 문법
pub fn greeting(name: &str) -> String { String::from("Hello!") } pub struct Guess { value: i32, } impl Guess { pub fn new(value: i32) -> Guess { if value < 1 || value > 100 { panic!("Guess value must be between 1 and 100, got {}.", value); } Guess { value } } } #[cfg(test)] mod tests { use super::*; #[test] fn it_works() { // 也有 assert_ne! 可以使用 assert_eq!(2 + 2, 4); } #[test] fn will_fail() { panic!("Make this test fail"); } #[test] fn greeting_contains_name() { let result = greeting("Carol"); // assert 时如果不符合预期,可以 print hint assert!( result.contains("Carol"), "Greeting did not contain name, value was `{}`", result ); } #[test] #[should_panic] // should_panic 用于检测是否 panic fn greater_than_100() { Guess::new(200); } } #[cfg(test)] mod tests2 { #[test] // 使用 Result<T, E> 作为返回值,无法使用 should_panic trait fn it_works() -> Result<(), String> { if 2 + 2 == 4 { Ok(()) } else { Err(String::from("two plus two does not equal four")) } } }