gpt4 book ai didi

c# - 调试时使用函数调用语句作为异常源

转载 作者:太空狗 更新时间:2023-10-30 01:01:37 26 4
gpt4 key购买 nike

我在整个单元测试中使用以下小实用程序来比较一些对象:

static class ObjectAssert
{
public static void AreSimilar(object expected, object actual, string message)
{
var serializer = new JavaScriptSerializer();

if (serializer.Serialize(expected) != serializer.Serialize(actual))
{
throw new AssertFailedException(message);
}
}
}

基本上它所做的就是将expectedactual序列化为JSON,然后比较结果字符串,这使得比较对象的公共(public)可见部分变得容易。我这样使用它:

class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public void UnitTest1()
{
var expected = new Person() { FirstName = "John", LastName = "Doe" };
var actual = new Person() { FirstName = "John", LastName = "Dae" };

// ...

ObjectAssert.AreSimilar(expected, actual, "Object mismatch.");
}

这个例子显然会抛出 AssertFailedException ,因为 actual.LastNameexpected.LastName 不匹配。


但是,Visual Studio 不会在调试期间停在 ObjectAssert.AreSimilar 行(例如 Assert.AreEqual),而是会打开 ObjectAssert.cs 文件(这是定义 ObjectAssert 类的地方)并在 throw new AssertFailedException(message) 行停止。

我怎样才能使调试器停止在 ObjectAssert.AreSimilar 行(在单元测试中),类似于使用 Assert.AreEqual 时的方式?(没有跳到它的实际实现)

最佳答案

DebuggerHiddenAttribute应用于您的函数将导致 Visual Studio 在异常中断时显示调用方法。

static class ObjectAssert
{
[DebuggerHidden]
public static void AreSimilar(object expected, object actual, string message)
{
// ...
}
}

关于c# - 调试时使用函数调用语句作为异常源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37944081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com