Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与Resharper的问题';s";类型参数是冗余的";和断言_C#_Unit Testing_Resharper_Assert_Resharper 6.0 - Fatal编程技术网

C# 与Resharper的问题';s";类型参数是冗余的";和断言

C# 与Resharper的问题';s";类型参数是冗余的";和断言,c#,unit-testing,resharper,assert,resharper-6.0,C#,Unit Testing,Resharper,Assert,Resharper 6.0,我最近刚开始使用ReSharper,正在寻找一种方法来解决我在“类型参数规范是冗余的”工具提示/快速修复中遇到的一个特殊问题。编写单元测试时,我一直在使用Assert.AreEqual(x,y),ReSharper将的使用标记为冗余。在我的单元测试中,我不希望将其标记为冗余的或任何类似的用法。有没有办法禁用这个特定的用例(可以扩展到其他断言)?请注意,我希望避免使用注释抑制,因为在源文件中会产生大量噪声。我也不想完全禁用该功能 为了澄清,我认为这个特殊情况被错误标记的原因是,泛型的使用导致在编译

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

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

谢谢

编辑:有一个关于测试内容是什么样子的问题,所以我提供了一个导致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);
}
[TestMethod]
public void ViewModelConstructor_NullProgram_setvisibilitytocollapsed()
{
_currentProgram=null;//设置测试中的条件
var Target=TargetMaker();//在所有测试中使用共享构造函数代码
Assert.AreEqual(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);
    }
}
测试中的类
{
公共字符串fieldUnderTest{get;set;}
公共类未测试()
{
fieldUnderTest=“新值”;
}
}
[TestClass()]
测试中的公共类
{
[TestMethod()]
public void ClassUnderTestConstructorTest\u FailsTest()
{
ClassUnderTest目标=新建ClassUnderTest();
Assert.AreEqual(true,target.fieldUnderTest);
}
[TestMethod()]
public void ClassUnderTestConstructorTest\u WontCompile()下的类
{
ClassUnderTest目标=新建ClassUnderTest();
Assert.AreEqual(true,target.fieldUnderTest);
}
}

单击重新拧紧零件,然后单击该行左侧,然后选择重新拧紧的检查选项…。在那里,您可以选择较低的限制级别,直到您喜欢为止。

Resharper 6.1引入了设置的概念-“层”。这将教您如何设置每个项目的设置,这似乎是您想要的。

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

为什么不在单元测试项目中禁用它呢?主要原因是我找不到任何地方可以在每个项目的基础上设置它。我只能找到该功能的一般严重性设置。每个项目的设置在哪里?如果您说R#建议删除显式类型参数,并且这样做会导致行为发生更改,那么这是R#中的一个bug,应该这样提出。毕竟,如果它的存在导致不同的事情发生,那么它就不是“多余的”。然而,我不能完全确定我是否能将你的代码可视化…@AakashM我大约一周前在ReSharper论坛上提出了这个问题,但没有得到该社区任何人的回应,所以尽管我很想看到这个问题得到修复,但我并没有看到他们会这么做。是的,它确实会导致不同的行为。如果没有泛型,它会将两侧视为对象并进行比较。当强类型版本在编译时失败时,如果你有一个简单的复制程序,我会直接使用bug跟踪器,而不是论坛(我应该说我从来没有使用过论坛),我自己也有,而且到目前为止还没有修复过:)你也可以在那里投票,虽然我没有任何直接的证据表明投票会影响事物被观察的顺序……这看起来像是丹尼尔想要的,这会很好,但我似乎无法让它发挥作用。我创建了一个像你的链接所说的层。我在该层禁用了困扰我的测试项目的选项。我保存了它并取消选中了博客中提到的文件。但仍在标记该错误。我重新加载了Visual Studio,错误仍然被标记。我通过工具提示禁用了该选项,并通过“保存到”对话框将其保存到我的新图层,但它仍在对其进行标记。DotSettings文件也以项目命名。知道我哪里出错了吗?GUI实际上正在更新创建的DotSettings文件中的值设置,但该设置未应用于当前源文件。标记为已接受,因为这是我想要的可行解决方案,希望当GUI支持层时,这将起作用并解决我的问题。如据我所知,它将禁用一切,而不仅仅是我的特定用途。