单元测试使用

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())的返回值,但大多数时候您希望编写测试来验证外部观察者可见的状态,因此这已经足够好了。