3

単体テストのアサートでは、リテラル値と式のどちらを好みますか? この小さな例は、私の言いたいことを示しています - コメントに注意してください:

[Test]
public function fromXML_works() : void {
    var slideshow : Slideshow = SlideshowConverter.fromXML(xmlSample);

    // do you prefer literal value "1":
    assertEquals(slideshow.id, "1");

    // ... or an expression like this:
    assertEquals(slideshow.id, xmlSample.@id);
}


private var xmlSample : XML =
    <slideshow id="1">
        <someOtherTags />
    </slideshow>;

この式の良いところは、XML サンプルが変更されても単体テストが壊れないことです。一方、私は基本的に、好きではない単体テストで SlideshowConverter の 1 つの側面の実装を直接提供しました (テストは、実装ではなく意図をテストする必要があります)。また、式を使用したテストではプログラミング エラーが発生しやすくなることも想像できます (たとえば、テスト メソッドの E4X 式を間違えた可能性があります)。

どのようなアプローチを好みますか? 通常、実際のプロジェクトでより重要な利点は何ですか?

4

2 に答える 2

2

特に、この TDD にタグを付けたので、リテラルに固執してください。それを渡すコードが存在する前にテストを書くと、あなたは自分自身にこう言います。これ非常に具体的な値です。それを隠さないでください。それを抽象化しないでください - 値をテストに入れるだけです。テストの文書化の価値も高めます。

于 2009-06-12T22:09:35.233 に答える
1

個人的には、テスト内で定数を使用するのが好きです。これにより、テスト フィクスチャがシンプルでわかりやすいものになります。さらに、あなたが言及したように、テスト自体のプログラミング エラーが回避されるため、実際のコードにプログラミング エラーが隠れる可能性があります。

于 2009-06-12T22:00:02.027 に答える