asp.net中的单元测试
本文关键字:单元测试 net asp | 更新日期: 2023-09-27 18:22:50
我对单元测试相当陌生。我正在上学,目前正在参加初级项目。我们有一个网络应用程序要写。我们将使用C#和asp.net。我们目前正在做所有的需求、架构,我负责质量保证和选择正确的框架。我们有大量的文书工作要完成,我正在努力完成我的QA计划。
我不确定单元测试要用什么。虽然,我们将使用asp.net,但我认为在这一点上我们没有必要使用MVC。为了简单起见,我们应该只使用visualstudio内置的功能来生成ASP.NET单元测试吗?或者,我应该考虑使用Nunit吗?或者类似的东西?
请记住,这只是一个学校项目。我们的4人团队都必须进行单元测试,而我们大多数人在这方面没有太多经验
你有什么想法?
为了简单起见,我们应该只使用内置的visual studio吗生成ASP.NET单元测试的功能?
不,那完全没用。好吧,你可以把它用于你的学校项目或其他什么,但不要自欺欺人地说你在做单元测试。
或者,我应该考虑使用Nunit吗?或者类似的东西?
是的,当然。但是,为了能够成功地对ASP.NET应用程序进行单元测试,需要对其进行设计,使不同的层之间弱耦合,并且可以单独重用。这可以通过使用抽象(接口和抽象类)而不是使用具体实现来轻松实现。还要记住,任何依赖于HttpContext的代码都不能很容易地单独进行单元测试。最好的方法是使用ASP.NET提供的抽象,如HttpContextBase、HttpRequestBase、HttpResponseBase。。。这可以很容易地在单元测试中被模拟。
如果您想要编写单元测试,您需要将逻辑与演示脱钩。MVC在这方面做得很好,这使得它比web表单更易于单元测试。测试网络表单并非不可能,只是更难。
不过,最终,您只需要牢记SOLID原则,并确保在整个项目中自由使用接口,以便模拟它们。
NUnit和MSTest并不是一个真正的问题。两者之间或多或少有着相同的功能,MStest的好处是它完全内置在Visual Studio中。随随便便。
我建议你也阅读《单元测试的艺术》一书。
根据项目的大小和范围,可能值得研究使用控制倒置框架(如Ninject)将所有依赖关系连接在一起。
同意两者。如果你的东西耦合得太紧密(集成并相互依赖),那肯定会有问题。将耦合分解为可以发送所有测试的非用户界面需求,我肯定会将NUnit与C#一起使用,但我们的开发工作是与WPF一起进行的。所有的数据处理和静态函数都可以进行测试,以确认限制、null、丢失/无效参数、返回的预期结果与实际返回的结果。如果做得不好,可能会很快对你的网站造成伤害。