Литералы или выражения в модульном тесте утверждают? - PullRequest
2 голосов
/ 13 июня 2009

Предпочитаете ли вы буквальные значения или выражения в ваших утверждениях в ваших модульных тестах? Этот маленький пример демонстрирует, что я имею в виду - пожалуйста, обратите внимание на комментарии:

[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 непосредственно в моем модульном тесте, который мне не нравится (тест должен проверять намерение, а не реализацию). Я также могу себе представить, что тесты с использованием выражений будут более подвержены ошибкам программирования (например, я мог ошибиться в своем выражении E4X в моем методе тестирования).

Какой подход вы предпочитаете? Какое преимущество обычно более важно в реальных проектах?

Ответы [ 2 ]

1 голос
/ 13 июня 2009

Особенно, если вы пометили этот TDD: придерживайтесь литералов. Написание теста до того, как существует код для его прохождения, вы говорите себе: «Self: если бы я имел эту функцию и дал ей эти параметры, то this - это то, что я хотел бы получить обратно». Где это является очень специфическим значением. Не скрывай это; не абстрагируйте это - просто поместите значение в тест. Это также повышает ценность теста для документации.

1 голос
/ 13 июня 2009

Лично мне нравится использовать константы в моих тестах - это гарантирует, что тестовые приборы просты и понятны. Кроме того, как вы упоминаете, он позволяет избежать ошибок программирования в самом тесте, что может скрыть ошибки программирования в реальном коде.

...