计算机科学家说, 每过10年, 就要重新评审什么是可计算的, 什么是不可计算的.
对于具体的一门技术或一个软件工具, 时间可以缩的更短, 每出一个新版本, 就要重新评审它是不是真正能满足你的要求.
基于这种考虑, 我才在今天再次下载了最新的NUnit, 看看它能不能适应于我的现实生活中真正的项目, 早期试用的一个版本让我失望了, 当我看完<<单元测试之道C#版>>在自己的项目上准备应用NUnit时, 却发现它不能从我的DLL中通过Attribute找到我的单元测试, 我还能说些什么呢, 一个以测试为生的工具, 你却不能找到让你执行的测试, 这的确是它的一个BUG, 虽然它是开源的, 虽然我也身为开发人员, 但我绝不会选择任何跟技术沾边的事我都脱了脚挽起袖子试试自己改, 我耗不起那份时间.
测试工具本身的测试是不充分的, 这比其它软件出了BUG更让人受不了.
看到unit-console.exe 有一个选项是 /xmlConsole , 我查看了它的输出, 它把那些某个测试函数没被运行时(比如指定了Explicit属性, 或Ignore属性)的原因给出来, 很谨慎地, 放在了XML的 块中. 但是还不够谨慎, 如果我在这样的字符串中间放置了"]]>"呢? 结果就是:
Unhandled Exception:
System.ArgumentException: Cannot have ']]>' inside an XML CDATA block.
at System.Xml.XmlTextWriter.WriteCData(String text)
at NUnit.Util.XmlResultVisitor.Visit(TestCaseResult caseResult)
at NUnit.Core.TestCaseResult.Accept(ResultVisitor visitor)
at NUnit.Util.XmlResultVisitor.Visit(TestSuiteResult suiteResult)
at NUnit.Core.TestSuiteResult.Accept(ResultVisitor visitor)
at NUnit.Util.XmlResultVisitor.Visit(TestSuiteResult suiteResult)
at NUnit.Core.TestSuiteResult.Accept(ResultVisitor visitor)
at NUnit.Util.XmlResultVisitor.Visit(TestSuiteResult suiteResult)
at NUnit.Core.TestSuiteResult.Accept(ResultVisitor visitor)
at NUnit.ConsoleRunner.ConsoleUi.CreateXmlOutput(TestResult result)
at NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions options)
at NUnit.ConsoleRunner.ConsoleUi.Main(String[] args)
make: *** [test] Error 2
这是在运行时的错误, 而不是在编译 Ignore属性时, 编译过程无法静态检查 Ignore的参数是不是含有某个特定的子串.
但毕竟这样的错误信息不能忍受, 至少它可以在]]和>之间多放一个空格. 一个空格就可以解决, 虽然隐式修改用户的输入也不合适.
比如在现在的CUBLOG页面上, 因为含有标题中含有]]>就会弹出一个对话框说含有非法字符, 这个也比未捕获的异常好一些了.
阅读(1128) | 评论(0) | 转发(0) |