我最近刚刚开始使用 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/