-1

私の知る限り、単体テストは、関連する機能が期待どおりに機能するかどうかをテストするために使用されます。知りたいのですが、これは関数の戻り値をチェックするだけで行われますか?

それ以外に、単体テストはさまざまな方法で使用されていますか? もしそうなら、その方法を教えてください。

4

2 に答える 2

1

値だけでなく動作もチェックできます。たとえば、予想される例外のスロー、またはMock-objectを使用した外部サービスへの呼び出しです。

void testMethodThrows()
{
    Foo f;
    AssertThrows([&](){f.bar();});
}

void testSendsEmail
{
    Foo f;
    EmailServiceMock email;
    f.bar(email);
    Assert(email.EmailWasSent());
}
于 2013-05-03T06:40:16.270 に答える
0

好きなものをチェックできます。関数型言語の場合、関数の戻り値は関数が何を行ったかを示す唯一の指標ですが、テストに合格したかどうかを判断するために、グローバル状態 (先行言語の場合) またはオブジェクト状態 (オブジェクト指向言語の場合) も検査する必要がある場合があります。

非常に単純な (多くの場合必要ではない) 例として:

void testSetTextSetsText()
{
  Foo foo();
  foo.setText("bar");
  assertEqual("bar", foo.text());
}

void実際、別の方法でメソッドを実際にテストすることはできません。技術的には、ここでもメソッド ( ) の戻り値をチェックしていますtext()が、ほとんどの場合、外部のオブザーバーに見える状態を検証するテストを書きたいので、これで十分です。

于 2013-05-03T06:33:55.210 に答える