MSTest - 如何为 UnitTest 项目初始化 log4net?

2024-04-18

我有一个 Visual Studio 单元测试项目,用于测试 ASP.NET MVC 项目。

添加程序集级别log4net.Config.XmlConfiguratorAssemblyInfo.cs 的属性不起作用,SO 上的其他人发现他们必须使用直接调用log4net.Config.XmlConfigurator.Configure();

问题是,单元测试如何做到这一点?使用的答案Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize类方法上的属性不起作用。

对我来说,这段代码会导致InvalidOperationException登录输出窗口并且测试会话提前爆炸。

[TestClass]
public sealed class Startup
{
    [AssemblyInitialize]
    public void Configure()
    {
        System.Diagnostics.Debug.Write("Microsoft.VisualStudio.TestTools.UnitTesting.AssemblyInitialize");
    }
}

看了文档,MSDN说不要使用AssemblyInitializeASP.NET 的测试项目,因为它们可能会被多次调用。

那么如何才能在运行任何测试之前配置 log4net 呢?


答案是我使用不当AssemblyInitialize.

一旦我将调试器设置为在第一次机会异常时停止,我就能够读到我的方法不是静态的,并且我没有添加接受参数TestContext to it.

如果你问我,如果方法必须以某种方式使用,那么对属性的使用相当蹩脚。不太容易被发现。

无论如何,这有效:

[TestClass]
public static class Startup
{
    [AssemblyInitialize]
    public static void Configure(TestContext tc)
    {
        log4net.Config.XmlConfigurator.Configure();
    }
}

关于不要将其用于 ASP.NET 测试的建议,请删除它。它可能会运行多次,但这并不重要。

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

MSTest - 如何为 UnitTest 项目初始化 log4net? 的相关文章

  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • 我如何模拟 ServiceStack IHttpRequest

    我正在尝试使用请求过滤器对将项目注入 IHttpRequest Items 的服务进行单元测试 this RequestFilters Add req res dto gt simplified for readability var re
  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • 叮当错误?命名空间模板类的朋友

    以下代码在 clang 下无法编译 但在 gcc 和 VS 下可以编译 template
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • C++ 将联合强制转换为其成员类型之一

    以下对我来说似乎完全符合逻辑 但不是有效的 C 联合不能隐式转换为其成员类型之一 有人知道为什么不这样做的充分理由吗 union u int i char c function f int i int main u v v i 6 f v
  • 带有运算符语法的错误消息,但不带有函数语法的错误消息

    为什么我在调用 unary 时收到错误消息 使用运算符语法 如果我用函数语法调用它就可以了 现场演示 https godbolt org z j7AbeQ template
  • 静态类与类的实例

    我有一个静态类 用于访问我的公共属性 整个应用程序的全局属性 和我在应用程序运行期间使用的方法 例如 我在静态类中设置了一些属性 并且在应用程序运行时我可以从属性中获取值 但我可以使用单例模式创建非静态类并以相同的方式使用它 问题 对于我的
  • 如何使用 Roslyn 通过扩展方法、静态类中的方法以及带有 ref/out 参数的方法来访问调用

    我正在致力于创建一个开源项目 用于创建 NET UML 序列图 该项目利用名为 js sequence diagrams 的 javascript 库 我不确定 Roslyn 是适合这项工作的工具 但我想我应该尝试一下 所以我整理了一些概念
  • 使用 C# 中的 Google 地图 API 和 SSIS 包获取行驶距离

    更新 找到了谷歌距离矩阵并尝试相应地修改我的代码 我在这里收到无效参数错误 return new GeoLocation dstnc uri ToString catch return new GeoLocation 0 0 https 基
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • 使用 OleDbCommandBuilder 时访问 SQL 语法错误

    我要在 C 中使用 OleDbDataAdapter 在 Access 数据库中插入数据 但收到错误消息INSERT INTO 命令中的语法错误 BackgroundWorker worker new BackgroundWorker Ol
  • C++ 到 C# 事件处理

    所以我有我的C WinForm 应用程序 我从中调用我的C CLI MFC dll图书馆 但也有一些events在我的 C 库上 甚至此事件也发生在该库的本机 非 CLI 部分 我需要从我的 C 应用程序调用一些代码 并获取一些有关此事件的
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • 在哪里可以下载没有 Visual Studio 2010 的 C# 4.0 编译器?

    我知道 CTP VS 2010 映像 但我可以只下载 NET Framework 4 0 和 C 编译器吗 AFAIK VS 2010 CTP 仅作为 VM 映像提供 我不相信 Microsoft 发布了 VS 的安装程序 其中一个绝对不适
  • 如何将 int 作为“void *”传递给线程启动函数?

    我最初有一个用于斐波那契变量数组的全局变量 但发现这是不允许的 我需要进行基本的多线程处理并处理竞争条件 但我无法在 pthread 创建中将 int 作为 void 参数提供 我尝试过使用常量指针 但没有成功 由于某些奇怪的原因 void
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的

随机推荐

  • 在 AngularJS 中发送 FormData 和其他字段

    我有一个表格有两个input text和一个upload 我必须将其发送到服务器 但在将文件与文本连接时遇到一些问题 服务器期望这个答案 title first input text second input file my file pd
  • 如何停止线程 - Qthread

    我必须在按下两个不同的按钮时启动 停止线程 请指出我的代码是否正确 我是否错过了 connect 调用中的某些内容 Problem我面临的是 在我的线程上调用 quit 后 然后我等待我的线程完成 但在线程上调用 wait never re
  • ARM Cortex A8 PMNC 读取在启用后也给出 0.. 有什么想法/建议吗?

    MODULE LICENSE GPL MODULE DESCRIPTION user mode access to performance registers int init arm init void unsigned int valu
  • 当自动为 WIX 安装程序收集文件时,我的目录结构有多灵活?

    请原谅我的无知 我一直在阅读一些书 但还没有准备好尝试任何东西 目前 我们有一个 wxs 文件 该文件无法轻松维护 每当从 SVN 提交 删除新文件时 都会手动添加 删除所有文件 由于在创建新文件和更新 wxs 安装文件之间发生了失误 我们
  • CSS 填充高度的 100%。不同的浏览器尺寸

    我有一个侧边栏 蓝色 设置为向左浮动 我已将高度设置为 100 将 body 和 html 高度设置为 100 它工作正常 问题是 当浏览器小于内容窗格 div 红色 时 侧边栏的高度将变得与浏览器的高度相同 因此 如果我向下滚动 侧边栏比
  • cmake中如何连接字符串

    有没有办法在cmake中连接字符串 我有一个仅包含具有主要方法的 cpp 文件的文件夹 我认为只需在所有 src 文件中使用 foreach 就很容易了 这就是我到目前为止所得到的 project opengl tutorial cmake
  • 将浮点值从大端转换为小端

    是否可以转换float是从大端到小端吗 我有来自 PowerPC 平台的大端值 我通过 TCP 将其发送到 Windows 进程 小端值 这个值是一个float 但是当我memcpy将值转换为 Win32 float 类型 然后调用 byt
  • 按类名称收集元素,然后单击每个元素 - Puppeteer

    使用 Puppeteer 我想获取页面上具有特定类名的所有元素 然后循环并单击每个元素 使用 jQuery 我可以通过以下方式实现此目的 var elements a showGoals toArray for i 0 i lt eleme
  • 在 LINQ 中返回 null 而不是默认值

    我有 LINQ 查询 它必须检索一些 DateTime 值 有时我没有匹配项 我必须为该 DateTime 值返回 NULL 而不是 DateTime 的默认值 如何避免这种情况并返回 NULL 而不是默认值 My LINQ Created
  • Zip 文件包含相同的文件但具有不同的哈希值?

    我使用 php 创建了数百个文件夹和文本文件 然后将它们添加到 zip 存档中 这一切都工作正常 但如果我使用相同的文件夹和文件创建另一个 zip 存档 新存档将具有与第一个存档不同的哈希值 如果我使用 winrar 而不是 php 创建存
  • Axis2C 非官方与 Axis2C 员工

    我将开发一个应用程序 该应用程序将使用一些基于 SOAP 的 Web 服务框架 我做了一些研究 我有点喜欢 Axis2C 框架 但在一些主题中 我发现最初的 Axis2C 实现存在内存泄漏 并且它的官方开发已停止 幸运的是 有 Axis2C
  • 我可以在浏览器中启动 socket.io/websocket 服务器吗?

    之前有人问过这个问题 答案是否定的 但是现在 有了 browserify webpack 我可以像在服务器上那样编写代码吗 它会在浏览器中运行 还是有任何限制使这变得不可能 你不能 在浏览器中启动服务器需要访问浏览器中根本不存在的低级功能
  • 如何让 ESLint 在 VSCode 中检查 HTML 文件?

    我有一个 Javascript 浏览器项目分为多个文件 并且无法让 ESLint 在同一全局范围下对 HTML 文件的脚本标记进行 lint 处理 以便一个文件中的类和函数的声明和调用可以在另一个文件中识别 这是我的项目结构 这是食物的内容
  • UnknownEntityTypeException:无法找到持久化器(Hibernate 5.0)

    在下面的代码中 当我尝试执行时Main java我遇到异常 Exception in thread main org hibernate UnknownEntityTypeException Unable to locate persist
  • 如何在方案中向后打印字符串?

    我知道如果我按照以下方式编写方案代码并输入 单词 a b c 它将以相同的顺序输出列表 您能告诉我是否有一种方法可以以相反的顺序打印出来 例如 列出 c b a 它需要是我以相反顺序打印出来的用户输入 所以 我不能称之为 反向 a b c
  • jquery add方法及实现

    好的 从我之前的帖子中我得到了很多好的反馈 我开始这个问题是为了开始一个新问题并添加我拥有的完整代码 我知道有些事情搞砸了 但这是我的方法和实现 jquery validator addMethod passwordRules functi
  • 使用 Json.net 仅将接口属性序列化为 JSON

    有了这样一个简单的类 接口 public interface IThing string Name get set public class Thing IThing public int Id get set public string
  • enumerateBodiesAlongRayStart 在 Xcode 6 中将“Chance”打印到控制台

    我正在使用 enumerateBodiesAlongRayStart 并且此方法不断地将单词 Chance 打印到我的控制台 有什么办法可以抑制这种情况吗 这是怎么回事 self gameScene physicsWorld enumera
  • std::ignore 用于忽略未使用的变量

    这是一个好的使用方法吗std ignore忽略未使用的变量 假设我有一个这样的函数 void func int i for some reason I don t need i anymore but I cannot change sig
  • MSTest - 如何为 UnitTest 项目初始化 log4net?

    我有一个 Visual Studio 单元测试项目 用于测试 ASP NET MVC 项目 添加程序集级别log4net Config XmlConfiguratorAssemblyInfo cs 的属性不起作用 SO 上的其他人发现他们必