Предпочитаете ли вы буквальные значения или выражения в ваших утверждениях в ваших модульных тестах? Этот маленький пример демонстрирует, что я имею в виду - пожалуйста, обратите внимание на комментарии:
[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 в моем методе тестирования).
Какой подход вы предпочитаете? Какое преимущество обычно более важно в реальных проектах?