我一直在致力于一个ECMAScript实现,目前正在完善这个项目。作为其中的一部分,我编写了如下测试:
[TestMethod]
public void ArrayReduceTest()
{
var engine = new Engine();
var request = new ExecScriptRequest(@"
var a = [1, 2, 3, 4, 5];
a.reduce(function(p, c, i, o) {
return p + c;
});
");
var response = (ExecScriptResponse)engine.PostWithReply(request);
Assert.AreEqual((double)response.Data, 15D);
}
问题是在这个测试和类似的测试中有太多的失败点,以至于它看起来几乎不值得。似乎我的努力应该花在减少模块之间的耦合上。要编写真正的单元测试,我必须假设如下:
[TestMethod]
public void CommentTest()
{
const string toParse = "/*First Line\r\nSecond Line*/";
var analyzer = new LexicalAnalyzer(toParse);
{
Assert.IsInstanceOfType(analyzer.Next(), typeof(MultiLineComment));
Assert.AreEqual(analyzer.Current.Value, "First Line\r\nSecond Line");
}
}
这样做将需要我写成千上万的测试,这似乎再次不值得。