0

Q1:什么时候进行单元测试比较理想?每次我去调试应用程序之前都应该运行它吗?是否应该在我提交对 svn 的更改之前运行它们?我认为如果一个应用程序只有几个单元测试,它应该在每次应用程序即将调试时运行。但是可以说我们数百个单元测试可能需要一些时间才能完成,不确定这是否理想。我认为最好在提交或部署之前运行它们。

Q2:在我的应用程序中,我使用带有服务层的存储库模式。我已经对如何在服务调用存储库并且存储库正在查询数据库时如何测试服务进行了一些研究。所以为了让它成为真正的单元测试而不是集成测试,我必须找到一种方法来测试而不接触数据库。我发现人们正在使用 Moq 来模拟他们的存储库。这就是我遇到问题的地方,对我来说,如果我模拟一个存储库,那么我正在改变该方法应该如何工作的行为,对我来说似乎是一个毫无意义的单元测试。看来您实际上并没有在测试您的代码。我对此完全错了吗?感谢您的任何建议。

4

2 回答 2

1

让我拍一张。

A1:当您重构现有代码时,您应该执行相应的单元测试(不是全部),看看您的更改是否有任何问题。对于新功能,您应该使用 TDD 并行实施新的单元测试。您永远不应该自己执行所有单元测试,而应该使用或依赖持续集成。

A2:我和你有同样的看法。但是现在,我确信需要对服务层进行单元测试。应该涵盖使用单元测试可以涵盖的任何内容。此时,您的服务的核心可能只是对存储库的委托,但服务会不断发展。这些服务负责参数验证、授权、日志记录、事务、批处理支持 API 等。然后,它不仅是数据访问,还有更多的事情。如果我在你的位置,我会通过模拟存储库来对服务进行单元测试。有时,服务在存储库之上提供方便的方法。

希望它可能对您有所帮助。

于 2013-06-27T17:43:13.580 回答
1

A1。对代码进行更改时,您运行单元测试的频率越高,您就会越快获得有关它们被写入断言的行为是否受到影响的反馈,因此越频繁越好!单元测试应该非常快,运行数百个应该最多只需要几分钟,但它可能值得研究无限(如果使用 java,我希望 .net 等存在替代方案)它是一个插件eclipse 并在 eclipse 构建您的项目时自动运行您的单元测试。只运行自上次运行以来受到影响的测试是足够聪明的,例如,如果您更新测试,或者如果您更新某些单元测试涵盖的某些“应用程序”代码,则将执行特定测试。

A2。单元测试会覆盖很多不同的场景,会多次调用你的服务+daos,使用“真实”的服务会很难保证每次调用的结果(而且每次测试都设置数据会很痛苦),而且结果可能很慢。单元测试模拟这些服务并使用集成测试独立测试它们通常会更好。

于 2013-06-28T15:32:43.347 回答