Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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# 如果单元测试失败,请始终运行特定代码_C#_Com_Resharper_Mstest - Fatal编程技术网

C# 如果单元测试失败,请始终运行特定代码

C# 如果单元测试失败,请始终运行特定代码,c#,com,resharper,mstest,C#,Com,Resharper,Mstest,这可能是正确的方法,也可能不是。我正在运行通过COM创建对象的单元测试,并在对象上运行一些测试。到目前为止,我已将测试设置为使用: [ClassInitialize] public static void Setup() { // Code to create object } [TestMethod()] public void SomeMethod() { // Run the tests on object } [ClassCleanup] public static

这可能是正确的方法,也可能不是。我正在运行通过COM创建对象的单元测试,并在对象上运行一些测试。到目前为止,我已将测试设置为使用:

[ClassInitialize]
public static void Setup()
{
    // Code to create object
}

[TestMethod()]
public void SomeMethod()
{
    // Run the tests on object
}

[ClassCleanup]
public static void UnSetup()
{
    // Dispose of object
}
问题是,有时在调试或其他单元测试失败时,unset()函数不会运行,因为单元测试过早结束。这给我留下了一个应该被删除的对象,从而在单元测试中出错。解决这个问题的最佳方法是什么


p、 其他测试也使用该对象,这就是为什么我使用[ClassCleanup]而不是[TestCleanup]

在哪里抛出错误?如果我再次运行测试,它会在[TestMethod()]中抛出错误。它这样做是因为它断言项的GUID与创建的项匹配…问题是该项已经存在,因此它正在创建两个相同的项,并比较重复项的GUID,从而引发错误。与此同时,我找到了一个解决方法,我决不认为它是一个解决方案:在[ClassInitialize]内部我这样做:var itm=GetItem()??NewItem();这个变通方法听起来非常有效,尤其是当您不能保证测试会很好地进行时。另一个选择是转移到nUnit进行测试,而不是MSTest。当处理COM和测试框架的怪癖时,“正确的方法”是运行测试。在哪里抛出错误?如果我再次运行测试,它会在[TestMethod()]内部抛出错误。它这样做是因为它断言项的GUID与创建的项匹配…问题是该项已经存在,因此它正在创建两个相同的项,并比较重复项的GUID,从而引发错误。与此同时,我找到了一个解决方法,我决不认为它是一个解决方案:在[ClassInitialize]内部我这样做:var itm=GetItem()??NewItem();这个变通方法听起来非常有效,尤其是当您不能保证测试会很好地进行时。另一个选择是转移到nUnit进行测试,而不是MSTest。当处理COM和测试框架的怪癖时,“正确的方法”是运行测试。德纳达。