2

我最近刚刚开始使用 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);
    }
}
4

3 回答 3

2

Resharper 6.1 引入了设置的概念——“层”。这是一篇博文,教您如何设置每个项目的设置,这正是您想要的。

于 2012-02-27T14:16:38.887 回答
0

单击冗余部分,然后单击该行的左侧并选择Inspection option for Redundent...。在那里,您可以选择较低的限制级别,直到您喜欢为止。

于 2012-02-27T14:15:37.890 回答
0

您不必为 Assert.AreEqual 的每个实例加上注释。相反,您可以在整个源文件中使用注释来突出显示。只需在文件开头添加一条禁用注释并在末尾添加一条启用注释。最小的噪音。

于 2012-02-29T20:59:27.827 回答