我知道单元测试很重要,可是我不知道为什么重要,所以有些问题请您指点。1 .单元测试是要把每个写的函数都要写个测试用例吗?如果有个函数sum,就是返回 a+b, 也要写吗?那岂不是很浪费时间?如果不是,那么单元测试要测试些什么单元呢?2. 说测试用例到最后可以积累,项目开发往后越往后越感觉到方便,这在什么地方可以体现出来?能否清您给个简单的例子描述一下nuit 单元测试在您的项目开发中的心得。它到底在什么地方解决您的哪些困难,在什么地方您感觉他特别方便。我现在感觉在 VS 中运行跟踪调试也没什么不好啊,为什么要用它呢?谢谢您

解决方案 »

  1.   

    单元测试并不是指每个函数都要去测试!
    我一般用跟踪调试,或实现一个功能后干脆运行程序一遍,去试用它,发现它的问题。转载MSDN:
    单元测试的主要目的是获取应用程序中可测试软件的最小片段,将其同代码的其余部分隔离开来,然后确定它的行为是否与预期的一样。分别测试了每个单元后将它们集成到模块中以测试模块之间的接口。单元测试已经证实了它的价值,因为在使用它的过程中识别了大部分缺陷。最常用的单元测试方法要求编写驱动程序和存根 (stub)。驱动程序模拟调用单元,而存根 (stub) 模拟被调用的单元。开发人员在此活动中的时间投入有时会导致单元测试降到更低的优先级,这几乎总是一个错误。即使驱动程序和存根 (stub) 花费时间和金钱,单元测试仍然提供了一些不容置疑的优点。它考虑了测试过程的自动化,降低了发现应用程序的更复杂片段中包含的错误的难度,并且通常会提高测试的覆盖范围,因为对每个单元都给予了关注。例如,如果您有两个单元,并认定将它们粘合在一起且最初作为集成单元来测试会更合算,那么错误可能会在不同的地方出现。 错误是否因单元 1 中的缺陷所引起? 
    错误是否因单元 2 中的缺陷所引起? 
    错误是否因这两个单元中的缺陷共同引起? 
    错误是否因这两个单元之间的接口中的缺陷所引起? 
    错误是否因测试中的缺陷所引起? 
    在集成模块中查找错误比首先隔离两个单元,测试每一个,然后集成它们并测试整体要复杂得多。驱动程序和存根 (stub) 可以重用,因此不用额外编写大量的测试代码,就可以经常重新测试开发周期内不断发生的更改。这实际上降低了基于每个用户编写驱动程序和存根 (stub) 的成本,并且可以更好地控制重新测试的成本。
      

  2.   

    To 3tzjq(永不言弃):谢谢,那就是说,如果如果我的程序可以很方便的运行起来调试,是不是可以少用活着不用unit tesing.To exing(铱星), 您的说法也给了我提示。看来在写底层无法提供完整运行环境的时候,用它是很方便。看过一点java,所以认为unit在java中的确很重要,因为如果没有eclipse, jbuilder等ide,调试程序几乎是misson impossible. 可是在.net中, 往往开发者有钱没钱都会选择VS,所以调试变成了很容易的事情。所以说如果运行环境完整,数据准备充分,使用VS.net, 是不是可以不用unit呢?再谢。
      

  3.   

    sorry 
    >  To 3tzjq(永不言弃):谢谢,那就是说,如果如果我的程序可以很方便的运行起来调试,是不是可以少用或者不用unit tesing.
      

  4.   

    >>>>使用VS.net, 是不是可以不用unit呢?用unit test使你可以经常运行这些 test,用unit test比debug要省事再说,做了改动后,这些 test可以保证你的改动没造成问题
      

  5.   

    >>>>使用VS.net, 是不是可以不用unit呢?用unit test使你可以经常运行这些 test,用unit test比debug要省事再说,做了改动后,这些 test可以保证你的改动没造成问题
    很少看见思归说中文。我还以为没输入法呢,呵呵
      

  6.   

    我用Nunit只是测试我写的组件类接口 一般不用了测试程序 因为我觉得只要类没有任何问题的话 程序如果也用Nunit而且还要写test用例的话 是比较浪费时间的或许这也是我们软件行业的悲哀吧
      

  7.   

    to billy_zh(张老三(闭关修练java)) >不是为了测试而写测试代码,
    >而是为设计写测试代码。很深澳啊。 能否详细说说。
      

  8.   

    其实这现在是个很流行的东西,叫TDD(测试驱动设计),参考http://blog.csdn.net/kulala/articles/172012.aspxhttp://c2.com/cgi/wiki?TestDrivenDevelopment
      

  9.   

    我觉得在webform里面很难做单元测试,尤其在使用到了第三方控件的情况下