gpt4 book ai didi

c# - Resharper 的 "Type argument is redundant"和断言问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:34 25 4
gpt4 key购买 nike

我最近才开始使用 ReSharper,正在寻找一种方法来解决我遇到的“类型参数规范是冗余的”工具提示/快速修复的特定问题。在编写单元测试时,我一直在使用 Assert.AreEqual<string>(x, y) ReSharper 标记了 <string> 的用法作为多余的。我不想在我的单元测试中将其标记为多余的或任何类似的用法。有什么方法可以禁用这个特定的用例(可以扩展到其他断言)?请注意,由于会在源文件中产生大量噪音,因此我想避免使用注释进行抑制。我也不想完全禁用该功能。

为了澄清,在我看来,这种特殊情况被错误标记的原因是因为泛型的使用导致断言中不匹配类型的错误在编译时被标记,而不是在测试运行时被标记。我想保留这种早期失败的行为,但基本上在我编写的每个测试中都消除了这导致的所有额外噪音。

谢谢

编辑:有一个关于测试内容会是什么样子的问题,所以我提供了一个导致 ReSharper 标记冗余的断言示例。

[TestMethod]
public void ViewModelConstructor_NullProgram_SetsVisibilityToCollapsed()
{
_currentProgram = null; //Set condition under test
var Target = TargetMaker(); //Use shared constructor code in all tests
Assert.AreEqual<System.Windows.Visibility>(System.Windows.Visibility.Collapsed, Target.SectionVisibility);
}

编辑 2:这是 ReSharper 建议的更改前后的示例。这两段代码显示出截然不同的结果。我注意到测试函数名称中的不同行为。

class ClassUnderTest
{
public string fieldUnderTest { get; set; }
public ClassUnderTest()
{
fieldUnderTest = "New Value";
}
}


[TestClass()]
public class ClassUnderTestTest
{

[TestMethod()]
public void ClassUnderTestConstructorTest_FailsTest()
{
ClassUnderTest target = new ClassUnderTest();
Assert.AreEqual(true, target.fieldUnderTest);
}

[TestMethod()]
public void ClassUnderTestConstructorTest_WontCompile()
{
ClassUnderTest target = new ClassUnderTest();
Assert.AreEqual<string>(true, target.fieldUnderTest);
}
}

最佳答案

Resharper 6.1 引入了设置-“图层”的概念。 Here's a blog-post教您如何设置每个项目 设置,这正是您想要的。

关于c# - Resharper 的 "Type argument is redundant"和断言问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9466366/

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