`

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测试过程,提高测试效率,确保服务接口的稳定...

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

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

    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. **驱动程序...

    googletest测试框架

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

    CXX Test测试框架最新版本

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

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

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

    activitystreams.js-test:as2test框架中的activitystreams.js的测试驱动程序

    在给定的场景中,我们关注的是一个名为"activitystreams.js-test"的项目,它是一个针对"as2test框架"中"activitystreams.js"模块的测试驱动程序。这个项目主要目的是确保`activitystreams.js`的功能正确无误,提高...

    com.bruceeckel.simpletest

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

    玩转Google开源C++单元测试框架Google_Test.pdf

    - **框架背景**:Google Test 是由 Google 开发并维护的一款强大的 C++ 单元测试框架,广泛应用于 C++ 开发项目中进行代码质量控制和功能验证。 - **主要特性**:提供了丰富的断言库、支持事件监听机制、参数化测试...

    编译好的com.bruceeckel.simpletest类文件

    Bruce Eckel的SimpleTest框架包含了一些基本的测试类,如`Test`和`TestDriver`,它们帮助开发者组织和执行测试用例。`Test`类提供了断言(assert)方法,用于检查代码的输出是否符合预期,而`TestDriver`则用于收集...

    googletest-release-1.12.1.tar.gz

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

    Python测试框架: 用Python测试框架简化测试

    py.test 框架接受普通的 Python 函数作为测试,而不要求把测试放在更大更重型的测试类中,这开启了 Python 测试的新时代。因为 nose 框架支持相同的习惯做法,所以这些模式很可能越来越流行。 测试示例 py.test 或...

    googletest-release-1.6.0.zip

    `googletest-release-1.6.0.zip` 是一个包含 Google 官方测试框架的压缩包,这个框架被广泛用于 C++ 开发中的单元测试和集成测试。Google Test,通常简称为 gtest,是一个开源的 C++ 测试库,它提供了一套强大的测试...

    googletest-master工程文件(参考).zip

    `googletest-master工程文件(参考).zip`是一个包含Google Test框架的源代码和相关配置文件的压缩包。Google Test,通常简称为gtest,是Google开发的一个开源的C++测试框架,用于编写C++代码的单元测试。它提供了一...

    了解_Boost_单元测试框架_my.pdf

    了解 Boost 单元测试框架 Boost 单元测试框架是 Boost 库...这个测试 demo 演示了如何使用 Boost.test 框架对一个简单的字符串类进行单元测试,并展示了单元测试的重要性和使用 Boost.test 框架进行单元测试的方法。

    玩转Google开源C++单元测试框架Google Test系列(gtest)(总) - CoderZh - 博客园1

    【玩转Google开源C++单元测试框架Google Test系列(gtest)(总)】 Google Test,简称为gtest...无论你是单元测试的新手还是经验丰富的开发者,本系列都将帮助你更好地理解和应用Google Test框架,提升你的C++项目质量。

    gtest(google test)

    `gmock`是Google Test框架的一部分,它是Google Mock库的简称,用于创建和使用模拟对象(Mock Objects)。在单元测试中,模拟对象能代替真实的依赖对象,使得测试更加隔离和可控。`gmock`提供了一组宏和接口,可以...

Global site tag (gtag.js) - Google Analytics