单元测试使用
Unit Test Usage
本文关键字:单元测试 更新时间:2023-10-16
据我所知,单元测试是用来测试相关功能是否按预期工作的。我想知道,这是通过检查函数的返回值来完成的吗?
除此之外,单元测试以不同的方式使用吗?
您(可以)不仅可以检查值,还可以检查行为。例如,抛出预期的异常或使用mock对象调用外部服务。
void testMethodThrows()
{
Foo f;
AssertThrows([&](){f.bar();});
}
void testSendsEmail
{
Foo f;
EmailServiceMock email;
f.bar(email);
Assert(email.EmailWasSent());
}
您可以检查任何您喜欢的。而对于函数式语言,函数的返回值是函数完成的唯一指示符,您可能需要检查全局状态(使用先验语言)或对象状态(在面向对象语言中),以及确定您的测试已通过。
作为一个非常简单的(通常是不必要的)例子:
void testSetTextSetsText()
{
Foo foo();
foo.setText("bar");
assertEqual("bar", foo.text());
}
实际上,您不能以另一种方式测试void
方法。从技术上讲您在这里再次检查方法(text()
)的返回值,但大多数时候您希望编写测试来验证外部观察者可见的状态,因此这已经足够好了。
相关文章:
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 用于交叉编译和CMake的预处理器宏的单元测试
- C++ 用于单元测试的模板模板
- 提升 1.64 单元测试编译失败
- 单元测试欧拉到四元数实现失败
- 运行 C++ 单元测试时LNK2005链接错误
- 禁用自动捕获 Googletest 单元测试中的C++异常
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 使用 Google Test 对自定义断言函数进行单元测试
- 如何将我的 CMake 项目配置为运行所有单元测试?
- 在Qt C++单元测试中动态加载QQuickWindow而不是QQuickWidget
- MS 本机单元测试 - 断言::线程失败不起作用
- 如何获取 CMake 单元测试的相对路径?
- QTimer 超时不会在单元测试中触发
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 在 AtMega32a 上运行的C++的单元测试
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- 如何用 c++ 编写单元测试?