C# 您应该在哪里对验证进行单元测试?

C# 您应该在哪里对验证进行单元测试?,c#,.net,asp.net-mvc,unit-testing,C#,.net,Asp.net Mvc,Unit Testing,这让我困扰了一段时间。我将所有验证放在服务层中。然而,当我进行单元测试时,我通常通过action方法来传递所有信息。然后进入我的服务层,其中包含验证 所以我现在不确定这是否是最好的方法。因为通常他们说你应该测试一下这个方法 你们怎么看?如果我是你们,我会单独测试服务层——其中包含验证——而不是通过动作方法 原因是我想让我的测试代码“一次只做一个测试”。我对我的控制器进行了测试,专门测试模型和视图的交互,而不是其他东西;我希望有专门针对服务层和验证的测试 当您进行单元测试时,这些测试是不可避免的

这让我困扰了一段时间。我将所有验证放在服务层中。然而,当我进行单元测试时,我通常通过action方法来传递所有信息。然后进入我的服务层,其中包含验证

所以我现在不确定这是否是最好的方法。因为通常他们说你应该测试一下这个方法


你们怎么看?如果我是你们,我会单独测试服务层——其中包含验证——而不是通过动作方法

原因是我想让我的测试代码“一次只做一个测试”。我对我的控制器进行了测试,专门测试模型和视图的交互,而不是其他东西;我希望有专门针对服务层和验证的测试


当您进行单元测试时,这些测试是不可避免的

如果您正在通过操作请求传递所有内容,那么听起来您正在进行集成测试

如果您正在进行(单元)测试,那么您应该测试单元。在这种情况下,您将向服务层传递(模拟)操作请求所需的所有数据

您应该模拟传递给服务层的对象,传递它,然后根据实际得到的结果断言预期结果

编辑

作为补充,最好进行端到端或集成测试,因为它可以证明(流程)是有效的


但是,您必须进行单元测试,因为单元测试将测试单个组件,并且比端到端测试能够或将会更快地将缺陷归零。

+1。是的,集成测试是有理由的,但在你开始之前,我认为你需要做单元测试。这样的话,如果你在任何地方做了一个更改,它比从集成测试中得到的更快。那么我应该不测试视图吗?我有一个方法,在if语句中调用,就像Create()一样,这将进行验证并创建一些内容,然后返回true。那我就还点东西。那么,在视图中是否有需要测试的内容?就像我假设我会模拟那个Create方法,因为我没有测试它。所以实际上,它只是一个if语句,返回了一些非真的东西。在这种情况下,我可能不会费心测试视图。TDD是您需要自行设计的东西,以便它最适合您的应用程序。没有一个公式适用于所有应用。决定您需要为哪些内容编写测试,以便在任何时候都能够运行它们,并识别由于应用程序中其他地方的代码更改而引起的任何问题。www.dnrtv.com在TDD上有一个由Venkat主持的精彩节目。我强烈推荐你去看。