`

test框架

    博客分类:
  • rust
 
阅读更多
#[derive(Debug)]
struct Rectangle {
    width: u32,
    height: u32,
}

impl Rectangle {
    fn can_hold(&self, other: &Rectangle) -> bool {
        self.width > other.width && self.height > other.height
    }
}

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 }
    }
}

fn internal_adder(a: i32, b: i32) -> i32 {
    a + b
}


//assert!,assert_eq!,assert_ne!
#[cfg(test)] //注解告诉 Rust 仅在您运行时编译和运行测试代码cargo test,而不是在您运行时cargo build
mod tests { //这里似乎同样并不强制这么写
    #[test] //加上这个才能在cargo test中被执行
    fn exploration() {
        let result = 2 + 2;
        assert_eq!(result, 4);
    }

    #[test]
    fn another() {
        panic!("Make this test fail");
    }

    use super::*;

    #[test]
    fn larger_can_hold_smaller() {
        let larger = Rectangle {
            width: 8,
            height: 7,
        };
        let smaller = Rectangle {
            width: 5,
            height: 1,
        };
        assert!(larger.can_hold(&smaller));
    }

    #[test]
    #[should_panic]  //加上这个后失败也不会fail
    fn greater_than_100() {
        println!("test greater_than_100");
        Guess::new(200);
    }

    #[test]
    fn it_works() -> Result<(), String> {
        if 2 + 2 == 4 {
            Ok(())
        } else {
            Err(String::from("two plus two does not equal four"))
        }
    }

    #[test]
    #[ignore] //耗时的可以标记ignore,不批量运行;
    // cargo test -- --ignored 单独运行
    // cargo test -- --include-ignored 运行所有包含ignore的
    fn expensive_test() {
        // code that takes an hour to run
    }

    #[test]
    //测试可以直接调用私有函数
    fn internal() {
        assert_eq!(4, internal_adder(2, 2));
    }
}

cargo test
cargo test -- --show-output //打印输出
cargo test greater //过滤运行

如果要测试tests文件夹某个文件,则:
cargo test --test integration_test

如果要调用某个函数又不想加入测试则在tests文件夹增加一个common目录
mod common;

#[test]
fn it_adds_two() {
    common::setup();
    assert_eq!(4, 2+2);
}

分享到:
评论

相关推荐

    google test框架使用中文文档

    本文档将详细介绍Google Test框架的使用方法,包括基本概念、断言、测试套件、测试用例、固定参数测试、测试 fixture、模拟(gmock)等内容。 一、基本概念 1. 测试点:测试点是测试用例中的最小可测试单元,通常...

    python接口测试APITest框架

    Python接口测试APITest框架是一种基于Python编程语言,结合unittest测试框架和requests库的数据驱动方法,用于实现轻量级API自动化测试的解决方案。这个框架旨在简化API测试过程,提高测试效率,确保服务接口的稳定...

    (源码)基于 Google Test 框架的 LeetCode 刷题项目.zip

    # 基于 Google Test 框架的 LeetCode 刷题项目 ## 项目简介 本项目是一个基于 Google Test 框架的 LeetCode 刷题项目,旨在通过单元测试来验证 LeetCode 题目的解决方案。项目涵盖了多种算法和数据结构题目,并通过...

    (源码)基于C++和GoogleTest框架的OshinoDB数据库系统.zip

    # 基于C++和Google Test框架的OshinoDB数据库系统 ## 项目简介 OshinoDB是一个基于关系模型(RMDB)开发的数据库系统,实现了增删改查、索引和故障恢复等基本功能。该项目是第一届数据库系统大赛的参赛作品,由“我...

    (源码)基于C++和Google Test框架的数独游戏生成与求解系统.zip

    # 基于C++和Google Test框架的数独游戏生成与求解系统 ## 项目简介 本项目是一个基于C++和Google Test框架的数独游戏生成与求解系统。它提供了生成数独游戏终局、读取数独游戏并求解的功能,并包含了生成数独游戏...

    Google Test框架静态库,环境为Window平台X64

    - Google Test框架可以用于测试多线程代码,但需注意线程同步和竞态条件的正确处理。 11. **Mock对象**: - 使用`gmock`库(Google Mock),可以创建模拟对象来代替难以控制或不存在的真实对象,便于隔离测试。 ...

    GoogleTest测试C++框架

    在主程序中,使用`main`函数初始化GoogleTest框架并运行所有测试: ```cpp int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } ``` 最后,使用CMake重新...

    功能测试工具源码DeviceTest

    1. **测试框架设计**:DeviceTest的源码首先展示了测试框架的基本结构,包括测试用例管理、测试执行调度、结果记录和报告生成等模块。理解这些模块的交互有助于我们构建自己的自动化测试解决方案。 2. **驱动程序...

    基于C++的Googletest单元测试框架设计源码解析与优化

    该项目通过深入解析Googletest框架的源码,不仅加深了开发者对于单元测试原理的理解,而且在框架设计上做出了创新性的优化。 首先,C++源代码文件的数量众多,显示了项目在源码层面的深入挖掘和优化工作。C++是...

    (源码)基于Google Test和libffi的动态函数调用测试框架.zip

    本项目是一个基于Google Test和libffi的动态函数调用测试框架,旨在通过Google Test框架和libffi库来测试和验证动态函数调用的正确性和性能。项目涵盖了从libffi库的编译到Google Test框架的集成,以及对动态函数...

    googletest测试框架

    Google Test框架主要包括两部分:gtest库和gmock库。gtest库提供了编写单元测试的基本结构和断言,而gmock库则专注于模拟(mocking)对象,允许在测试中隔离依赖关系,以便测试单一功能模块。 1. **gtest库**:这是...

    CXX Test测试框架最新版本

    CXX Test框架的核心特性包括: 1. **易用性**:CXX Test提供了一种简单的方式来编写测试用例和测试套件。它支持直接在C++源代码中定义测试,避免了其他测试框架可能需要的额外脚本语言。 2. **灵活性**:该框架...

    基于Java语言的thresh-test测试框架设计源码

    thresh-test框架的出现,正是为了解决这一问题,它不仅仅是一套测试工具的集成,更是测试方法论与最佳实践的体现。 从文件结构来看,21个Java源文件涵盖了测试框架的核心逻辑,它们可能包括测试用例的编写、测试...

    基于Java的CloudTest单元测试框架设计源码

    CloudTest框架是基于Java语言开发的,它将单元测试的简便性与测试工作的高效性进行了优化组合。作为一个轻量级框架,它不仅保持了灵活性和扩展性,还集成了多种功能,如测试用例管理、测试数据管理、断言管理、自动...

    基于Python语言的JR_AUTO_TEST开源测试框架设计源码

    在实际应用中,JR_AUTO_TEST框架能够与多种开发工具和环境协同工作,进一步增强了其适用性。开发者可以根据项目需求,选择使用该框架进行常规的回归测试,或者针对特定的功能点进行专项测试。此外,由于是开源项目,...

    DAZABTest:具有简单 API 的同步 ABTest 框架

    达扎测试 DAZABTest 是一个带有同步 API 的简单拆分测试框架。 测试条件在会话中保持不变,并使用 NSUserDefaults 启动,确保每个用户都有一致的体验,无论他们最终进入哪个测试桶。安装最简单的入门方法是使用 。 ...

    googletest-1.8.x.zip

    googletest-1.8.x作为一个版本号,代表了Google Test框架的一个稳定版本,它在软件测试领域占据着重要地位,为开发者提供了一个高效的C++单元测试解决方案。开发者可以依赖这个框架来创建结构化的测试,验证代码的...

    (源码)基于Python脚本的Google Test单元测试框架版本生成器.zip

    这是一个Python脚本,用于从configure.ac文件中提取Google Test框架的版本信息,并生成一个包含版本信息的头文件Version.h。这个头文件将被用于替换Info.plist文件中的版本字符串,以便在Finder中显示正确的版本信息...

    googletest-release-1.12.1.tar.gz

    在"googletest-release-1.12.1.tar.gz"这个压缩包中,包含的是Google Test框架的1.12.1版本。 Google Test的设计理念是使测试尽可能简单、灵活且可扩展。它提供了断言(assertions)来检查代码行为,测试套件(test...

    com.bruceeckel.simpletest

    使用SimpleTest进行单元测试时,开发者会创建一个继承自SimpleTest框架提供的基础测试类的测试类,并在其中定义测试方法。每个测试方法通常对应于被测代码的一个功能,通过调用SimpleTest的方法来运行并检查测试结果...

Global site tag (gtag.js) - Google Analytics