对 ASP.Net Web 应用程序的 App_Code 进行单元测试

2024-01-08

我想创建一个 ASP.Net Web 应用程序,并且想为其编写单元测试。但我的单元测试项目看不到我的 Web 应用程序的 App_Code 目录中的任何类型。

重现步骤

(如果您已经知道如何创建默认的 Webforms Web 应用程序并添加 app_code 文件夹,请跳过图像)

打开视觉工作室。选择文件->新建->项目。
选择“模板”->“Visual C#”->“Web”。选择 ASP.Net Web 应用程序。选择“确定”。

选择“网络表单”。选中“添加单元测试”。单击“确定”。

在解决方案资源管理器中,右键单击 Web 应用程序并选择“添加 -> 添加 ASP.Net 文件夹 -> App_Code”。

将新项目添加到 App_Code,命名为“Util.cs”。向文件添加一个函数,内容如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1.App_Code
{
    public class Util
    {
        public static int getMeaningOfLife()
        {
            return 42;
        }
    }
}

在单元测试项目中,将 UnitTest1.cs 更改为:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace WebApplication1.Tests
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            int result = WebApplication1.App_Code.Util.getMeaningOfLife();
            if (result != 42)
            {
                Assert.Fail();
            }
        }
    }
}

然后构建项目。

预期行为:

解决方案应该构建。如果我们尝试测试,测试应该会成功。

实际行为:

该解决方案无法构建The type or namespace name 'App_Code' does not exist in the namespace 'WebApplication1' (are you missing an assembly reference?)

其他注意事项

我在看单元测试 ASP.net 网站项目代码存储在 App_Code 中 https://stackoverflow.com/q/1198555/953482,但我不认为这个问题完全符合我的情况,因为他们正在测试一个网站,而我正在测试一个网络应用程序。一些答案特别建议切换到网络应用程序,这意味着这将不再是问题:

但是,如果您可以选择将代码分离为二进制文件(类库)或仅使用网络应用程序,我建议作为更好的选择。

 

我要么将此逻辑移至其自己的类库项目中,要么将项目类型更改为Web应用程序正如 Fredrik 和 Colin 所建议的那样。

 

正如OP所说,也有可能移动到Web应用程序项目,我想说这也更干净

“尝试使用网络应用程序”的建议不适用于我,因为我already使用网络应用程序,但它仍然不起作用。

答案还建议“尝试将代码移至其自己的项目中”,我确实希望这会起作用,但在我的实际解决方案中,我在 App_Code 目录中有数十个文件。在首先建立测试框架之前,我不想执行任何严重的结构更改。


所以为了带来更多的清晰度。App_Code文件夹在 ASP.NET 项目中具有特殊含义。您可以将文件放在那里,asp.net 将在运行时编译它们,并监视它们的更改,以便在发生更改时即时重新编译。细节不是很相关,主要是:如果你不需要这个功能 - 不要使用App_Code folder.

然而,该文件夹本身并没有什么神奇之处。当您通过“添加 ASP.NET 文件夹”(或仅在网站项目中手动)创建它时 - Visual Studio 将设置您添加到其中的文件的构建操作Content,甚至对于代码文件也是如此。此类文件不会被编译成生成的程序集,这就是为什么您不能从单元测试项目中使用它们,甚至也不能从网站代码本身使用它们。如果您手动将构建操作更改为Compile- 它将被编译并可以像平常一样使用。这就是所有的区别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 ASP.Net Web 应用程序的 App_Code 进行单元测试 的相关文章

  • 值类型如何实现引用类型

    我遇到了一个值类型正在实现 ref 的场景 类型 只是想知道这怎么可能 幕后发生了什么 结构体是值类型 接口是引用 类型但结构可以实现接口而不会出现任何错误 有什么想法吗 提前致谢 实际上 它同时以两种不同的方式进行 首先 任何值类型都可以
  • ASP.NET 网站上的 XSS 攻击 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我遇到了很大的麻烦 请帮忙 我的网站
  • C++ 并行任务的开销

    我有以下简单的功能 include
  • 使用 LINQ 展平嵌套字典

    所以我有一本形式的字典Dictionary
  • 是否自初始化 'A a = a;'允许吗?

    此代码在运行时在复制构造函数中失败 但编译器 MSVS2008 没有发出警告 您能解释一下 最好引用标准 这段代码是否非法或什么 我理解 A a a 永远不应该写在第一位 但我正在寻找理论背景 class A public A p new
  • 如何解析多态 JSON 数组?

    我有一个 JSON 格式的文件 其中包含个人用户的记录 一些用户的记录中间有一个评论字段 我只想解析顶级项目 全名 贡献者姓名 电子邮件 使用 Newtonsoft JSON 解析器 但我似乎无法让它识别单个对象 当我将整个字符串解析为一个
  • 如何在 C 语言中获取输入中的空格

    我想从控制台获取字符数组 它还包含空格 我在 C 中知道的唯一方法是 scanf 但是一旦遇到空格 它就会停止接受输入 我该做什么 这就是我正在做的事情 char address 100 scanf s address 尝试使用 fgets
  • 为什么最小的 int -2147483648 的类型为“long”? [复制]

    这个问题在这里已经有答案了 对于一个学校项目 我必须编写 C 函数 printf 的代码 一切进展顺利 但有一个问题我找不到好的答案 所以我来了 printf PRINTF d t d n 2147483648 告诉我 gcc Werror
  • 当分配返回 0 时,具有空异常规范的运算符 new 调用构造函数

    我有以下声明 void operator new size t s PersistentMemory m throw return m gt allocatePersistentMemory s 我正在测试启动时的内存耗尽 这会导致m gt
  • 检查 SSRS 报告自定义代码中的 Active Directory 组成员资格表单

    我正在构建 SQL Server Reporting Services SSRS 报告 查看报告的最终用户可以选择某些输入参数 在本例中为位置 用户可以选择的位置取决于 Active Directory 组成员身份 因此我尝试在自定义报告功
  • 当一对迭代器初始化时,向量是否知道先保留?

    考虑以下代码 struct MyData MyData const BYTE pData size t uSize bucket pData pData uSize std vector
  • 盒式捆绑包与 MVC4 捆绑包

    我目前正在开发一个原型 ASP NET MVC 3 解决方案 该解决方案将用作多个项目重写的基础 来自 Web 表单 我的目标之一是跨应用程序实现一些脚本管理 而不是我们目前没有的目标 MVC 3有一个缺陷恕我直言 如果您需要在部分视图或模
  • C++ 模板参数数量错误(2,应该是 1)

    我使用 C 并行快速排序程序进行了测试 如下所示 首先使用列表作为容器 然后我转移到通用容器类型 但它报告了标题错误 可以帮忙解决这个问题吗 include
  • 快速将文本附加到文本框

    我有一个BackgroundWorker正在发布消息的线程 使用BeginInvoke在 GUI 中的文本框中 方法 write debug text 在文本框中显示文本使用AppendText并将文本写入Console 外观上是这样的Ba
  • 如何解决 boost::multi precision::cpp_dec_float 除法错误

    除以boost multiprecision cpp dec float有某种舍入误差 如下 include
  • .NET 或 Windows 同步原语性能规范

    我目前正在写一篇科学文章 我需要非常准确地引用 有人可以向我指出 MSDN MSDN 文章 一些已发表的文章来源或一本书 我可以在其中找到 Windows 或 NET 同步原语的性能比较 我知道这些是按性能降序排列的 互锁 API 关键部分
  • C中使用JNI从对象获取对象

    public class Student private People people private Result result private int amount 这是 Java 中类的示例 在C中 我试图获取 学生 中的 人 但失败了
  • 如何在realm-dotnet中存储System.Collections.Generic.Dictionary

    我正在尝试将 Realm NET 集成到我的 uwp 项目中 我想知道是否有任何方法可以在 Realm dotnet 库中存储 System Collections Generic Dictionary 我试过这个 public class
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • 标准 .NET 库是否依赖于任何非托管 DLL?

    只是出于好奇 NET 框架本身在访问标准库时是否依赖于任何非托管 DLL 例如 我调用方法 A 并且 在幕后 方法 A 或该方法 A 内的任何其他方法对非托管 DLL 执行 PInvoke 是的 Net 库大量使用非托管函数 库可以调用两种

随机推荐

  • MailSystem.Net 删除邮件,IndexOnServer 属性 = 0

    我在用着邮件系统 NET http mailsystem codeplex com并尝试从服务器删除消息 问题是 IndexOnServer 属性为 0 我收到以下错误 Command store 0 flags silent Delete
  • 给定单词向量(而不是单词本身),获取最相似的单词

    使用gensim models Word2Vec库 您可以提供一个模型和一个 单词 您希望找到最相似单词的列表 model gensim models Word2Vec load word2vec format model file bin
  • TFS 2017 版本定义。 WinRM - IIS Web 应用程序管理任务。在“默认网站”下创建应用程序

    我正在制定一个发布定义 它将把一个网站部署到测试 IIS 服务器 Windows Server 2012 IIS 8 我想使用 IIS Web 应用程序管理任务在 默认网站 Scott 下创建和配置应用程序或虚拟目录 当我指定 默认网站 S
  • 为什么 google.load 会导致我的页面变成空白?

    嗯 这看起来很奇怪 但我找不到解决方案 为什么这个小提琴会演奏http jsfiddle net carlesso PKkFf http jsfiddle net carlesso PKkFf 显示页面内容 然后当 google load
  • PHP 友元/包可见性

    有没有办法限制 PHP 中的可见性 就像 Java 中的 包 可见性或至少 C 中的 朋友 可见性一样 维护大型 OOP 项目并且不让任何人使用代码的任何部分的最佳实践是什么 我尽可能多地使用私有和受保护的可见性 但有时这还不够 我知道这个
  • Angularjs - 使用指令添加 ng-* 属性

    我正在尝试将简单的 ng mouseover 绑定添加到由指令管理的元素 但无法让它发挥作用 http jsbin com aqibij 2 edit http jsbin com aqibij 2 edit 我尝试在添加 ng mouse
  • 使用本地 JSON 文件填充 Jtable

    我试图从 json 文件中获取所有数据并将数据填充到 jtable 中 我已经从 json 文件中获取数据并打印输出 但是当我尝试将数据填充到 jtable 中时 我无法将数据放入 jtable 中我的循环最终将插入数据的帧相乘 请帮助我
  • 如何在 Gluon 项目中引用 android.jar

    上面是我在 Android 上部署 JavaFX 的 Gluon 项目 我的问题是我无法引用 android jar 如何解决这个问题 构建 gradle buildscript repositories jcenter dependenc
  • PHP 中声明不必要的变量会消耗内存吗?

    我通常在 PHP 中这样做是为了更好的可读性 但我不知道它是否消耗内存或有其他问题 假设我有这个代码 user getUser getUser will return an array 我可以做 email user email sendE
  • 是否可以在 React 的 useEffect 中使用自定义钩子?

    我有一个非常基本的自定义挂钩 它接受路径并从 firebase 返回文档 import React useState useEffect useContext from react import FirebaseContext from s
  • 在抛出异常时中断捕获的异常

    在 VS 调试器中 未捕获的异常会导致程序在抛出异常时 或足够接近 中断 并处于一种允许您查看该点之前的所有堆栈帧和局部变量的状态 有没有办法获得相同的结果 抛出时中断 但在特定点捕获异常 我对对所有异常甚至给定类型的所有异常执行此操作不感
  • FFT - 计算频率仓之间的精确频率

    我在用我在网上找到的一个不错的 FFT 库 http www corix dk Mix FFT mix fft html看看我是否可以编写一个音高检测程序 到目前为止 我已经能够成功地让库对包含一些正弦波的测试音频信号进行 FFT 计算 其
  • 从 python 内部触发 catkin 构建过程

    我正在编写一个 python 脚本来组织一个由多个存储库组成的项目 一些目标是使用catkin构建的 由于catkin是一个python工具 我怀疑必须有一种方法来调用等效的catkin build来自 python 脚本 然而 我正在努力
  • 在自定义指令中模拟 v-if 指令

    我需要销毁 v if 等自定义指令中的元素 如果条件失败 则禁止创建项目 我尝试这个 export const moduleDirective DirectiveOptions DirectiveFunction el binding vn
  • 如何使用 MailMessage 在 powershell 电子邮件中嵌入图像

    我有一封可以在 PS 上使用的电子邮件 我一直在尝试做的是将图像嵌入到电子邮件中 而不是附件 以下是我到目前为止所拥有的 function Email smtpServer smtp server smtpFrom email from s
  • 1969 年 12 月 31 日晚上 7:00 发生了什么

    每次在 PHP 中创建一个如下变量时 date strtotime row date date date M d Y a t g i A date Mmm dd YYYY at h mm PM AM 不知何故row date 恰好是 0 日
  • C# 将 string,int,string 存储在可访问变量中

    我需要保存一个包含静态国家 地区列表的类以进行缓存 数据是用 string shortName Primary Key IL or UK for example int ID Unique has no meaning but needs
  • 离子造型 2 吐司

    有什么方法可以在 ionic 2 toast 中设置文本消息的样式吗 我已经尝试过这个 let toast Toast create message Some text on one line br br Some text on anot
  • Qt 有没有办法强制 QMediaPlayer 缓冲文件而不播放它?

    当您将文件加载到QMediaPlayer例如 它不会自动缓冲文件 这MediaStatus遗迹NoMedia直到您使用播放文件play 只有在此之后它才会最终成为BufferedMedia 我在文档中找不到任何方法来强制播放器缓冲文件而不播
  • 对 ASP.Net Web 应用程序的 App_Code 进行单元测试

    我想创建一个 ASP Net Web 应用程序 并且想为其编写单元测试 但我的单元测试项目看不到我的 Web 应用程序的 App Code 目录中的任何类型 重现步骤 如果您已经知道如何创建默认的 Webforms Web 应用程序并添加