我有一个ASP.net网站项目(.net 3.5).目前,所有非代码隐藏代码文件(包括Linq2Sql内容、数据上下文、业务逻辑、扩展方法等)都位于App_code文件夹中.

我有兴趣在项目的某些部分引入单元测试(使用nunit).我要做的任何单元测试都需要完全访问当前位于App_code文件夹中的所有代码.到目前为止,我已经做了一些初步阅读,共识似乎是:

  • 鉴于我目前的设置,这将不可能实现
  • 单元测试需要引用作为已编译DLL一部分的类,根据定义,网站项目仅在运行时编译.
  • 为了继续,我需要将我的整个项目转换为Web应用程序,或者将我要测试的所有代码(即App_Code的全部内容)移动到一个类库项目中,并在网站项目中引用该类库项目.它们中的任何一个都将以编译的DLL格式提供对我所需的类的访问,这将允许我对它们进行单元测试.

对吗?或者有没有其他方法可以在不重构/重构整个项目的情况下进行单元测试?

推荐答案

你的结论似乎是正确的.我会投票支持将功能转移到一个或几个类库项目中,因为这可能会为在其他项目中重用相同的功能打开大门.

Asp.net相关问答推荐

页面刷新后如何存储JS Select 数据

有人可以解释一下这个Eager 加载示例吗?

在每个对象上设置 ClientIDMode = Static 是否有任何缺点(在母版页的 maincontent 上设置)

HttpRuntime.Cache[] 与 Application[]

任何人都有解决 Internet Explorer 上剩余 n 项问题的 idea 吗?

如何缓存数据库表以防止在 Asp.net C# mvc 中出现许多数据库查询

如何判断一个IP地址是否是私有的?

用户NT AUTHORITY\NETWORK SERVICE登录失败

如何在 Kendo UI 中获取下拉列表中选定项目的文本?

使用域用户的 SQL 连接字符串?

通过 jQuery 调用 ASP.NET 服务器端方法

无法确定条件表达式的类型,因为 'string' 和 'System.DBNull' 之间没有隐式转换

ASP.NET RadioButton 与名称(组名)混淆

ASP.NET 中的多选下拉列表

设置 Response.Status 生成HTTP 状态字符串无效异常

ASP.NET MVC 2.0 JsonRequestBehavior 全局设置

通过 ASP.NET/C# 使用 Plupload

由 UpdatePanel 内 GridView 内的 LinkBut​​ton 触发的完整回发

如何将参数传递给 ASP.NET MVC 2 中的自定义 ActionFilter?

C# - 将图像输出到响应输出流给出 GDI+ 错误