据我所知,单元测试用于测试相关功能是否按预期工作。我想知道,这只是通过检查函数的返回值来完成的吗?
除此之外是以不同方式使用的单元测试?如果可以的话,请你说明一下。
答案 0 :(得分:1)
您(不仅)可以检查值,还可以检查行为。例如,使用Mock-object抛出预期异常或调用外部服务。
void testMethodThrows()
{
Foo f;
AssertThrows([&](){f.bar();});
}
void testSendsEmail
{
Foo f;
EmailServiceMock email;
f.bar(email);
Assert(email.EmailWasSent());
}
答案 1 :(得分:0)
你可以检查你喜欢的任何东西。而对于函数式语言,函数的返回值是函数所做的唯一指示,您可能需要检查全局状态(使用先前语言)或对象状态(使用面向对象语言)以确定测试已通过。
作为一个非常简单(通常不必要)的例子:
void testSetTextSetsText()
{
Foo foo();
foo.setText("bar");
assertEqual("bar", foo.text());
}
实际上,您无法以其他方式真正测试void
方法。 技术上你在这里再次检查一个方法(text()
)的返回值,但大多数时候你想编写测试来验证外部观察者可见的状态,所以这很好够了。