据我所知,单元测试用于测试相关功能是否按预期工作。我想知道,这是否仅通过检查函数的返回值来完成?
除此之外,单元测试是否以不同的方式使用?如果是这样,请你展示一下如何。
据我所知,单元测试用于测试相关功能是否按预期工作。我想知道,这是否仅通过检查函数的返回值来完成?
除此之外,单元测试是否以不同的方式使用?如果是这样,请你展示一下如何。
您(可以)不仅检查值,还检查行为。例如,抛出预期异常或使用Mock-object调用外部服务。
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()
这里再次检查方法 ( ) 的返回值,但大多数时候您想编写测试来验证外部观察者可见的状态,所以这已经足够了。