我需要清楚我对单元测试的看法。
Q1。)例如:功能A;功能B {做一些其他的东西;功能A;}
根据定义,单元测试应该写入应用程序的最小(独立单元)。在这种情况下,我应该为Only for A编写单元测试,还是需要为A和B写入?
Q2。)我的应用程序中的2/3部分函数使用本地数据库(sqlite)处理(get / update / insert)
(When is a Test not a Unit-test?)提到单元测试不应该触及数据库。那么如何确保我的数据库查询运行良好呢?
答案 0 :(得分:1)
如果您提供一些更具体的示例,将会有所帮助。然后答案可能更具体。除此之外,以下是一般方法:
Ad 1)您应该测试功能A和功能B(假设它们都是公共功能)。为什么?首先,正如你所写的,功能B正在做其他一些事情"同样。所以,肯定有一些额外的东西需要在那里进行测试。其次,函数B调用函数A来实现其语义的事实是可以随时间改变的实现细节,尽管函数B的语义将保持不变。关键是,你必须测试函数B应该做什么,无论它是否调用A.
广告2)单元测试不是唯一一种自动化测试。是的,单元测试不应该触及数据库,但有自动化触摸数据库的测试。根据术语,它们可以有不同的名称。 集成测试可能就是其中之一。这样的测试也可以使用单元测试运行器来运行,例如, NUnit,但这不会使他们进行单元测试。在这种情况下使用单元测试运行器只是为了方便。
如果您提供更具体的示例,我们可以草拟测试(单元和"集成")的外观。
要真正清除你的想法"并且对自动化测试的主题有了更深入的了解我强烈推荐你从Roy Osherove The Art of Unit Testing, With Exampels in CSharp, 2nd Edition出版的优秀书籍。