在单元测试中,您更喜欢 Asserts 中的文字值或表达式吗?这个小例子说明了我的意思 - 请注意评论:
[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 表达式中犯了一个错误)。
你更喜欢什么方法?在现实世界的项目中,什么优势通常更重要?