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