Tag: rcw

Visual Studio OrderedTests:已经从其基础RCW分离的COM对象不能使用

首先,这里使用的技术包括:Visual Studio,C#,Selenium WebDriver,Google Chrome和MS Excel。 我正在构build一个自动化框架来testing多个Web应用程序。 我正在使用Excel电子表格来提取variables数据,以便其他testing人员使用testing更容易。 在我们的烟雾testing过程中,我们通过了几个我已经编制好的unit testing。 因此,我认为创build一个有序testing是一个好主意。 当单独运行每个testing时,他们工作得很好。 但是,一旦我开始运行有序testing,列表中的第一个testing将运行,但是我得到这个错误: System.Runtime.InteropServices.InvalidComObjectException:不能使用已从其基础的RCW分离的COM对象。 我在名为ReadFile的类中创build对Excel电子表格的引用: static Excel.Application xlApp = new Excel.Application(); static Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"SPREADSHEET LOCATION"); static Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; static Excel.Range xlRange = xlWorksheet.UsedRange; 当我的testing通过或失败时,他们调用CleanUp方法,它包括退出chromedriver并调用ReadFile.Close()方法: xlWorkbook.Save(); xlWorkbook.Close(Type.Missing, Type.Missing, Type.Missing); xlApp.Quit(); GC.Collect(); GC.WaitForPendingFinalizers(); 我做了相当多的研究,发现可能需要调用Mashall.FinalReleaseComObject。 我也尝试过使用这个,但似乎没有什么差别。 我也注意到,第一次testing结束后,Excel进程继续运行几秒钟。 所以我试着睡觉线程,让它在下一次testing开始之前等待Excel完全closures,但是当Excel删除时(即使睡眠定时器还没有完成),它也会立即抛出exception。 无论如何,在这一点上,我正在寻找任何可能的指导,这是不胜感激。 请记住,我不是这些技术的专家。