2014-06-20 69 views
2

我最近在ApprovalTests中遇到了一個問題,其中diff工具(BeyondCompare 3,在我的情況下;我有一個同事使用相同的問題WinMerge)閃爍,然後立即關閉。該工具保持打開狀態的唯一方法是在運行測試之前打開該工具。ApprovalTests DiffReporter不彈出diff窗口,除非diff工具打開

我正在使用ApprovalTests 3.6;我知道這個問題也存在於以前的版本中。

的方法調用驗證很簡單:

[UseReporter(typeof(DiffReporter))] 
    protected void VerifyTables(IEnumerable<DataTable> tables, bool showSchema = false) 
    { 
     Approvals.VerifyAll(tables.Select(t => GetXmlForApproval(t, showSchema).ToString()), ""); 
    } 

至於BeyondCompare而言 - 我已經在Visual Studio TFS比較這個問題,這是由於TFS被設置爲調用BCompare.exe而不是BComp.exe。所以,我試着做一個BeyondCompareReporter的自定義實現,它調用BComp.exe而不是BCompare.exe,但是在這種情況下使用它並沒有什麼不同。

回答

4

這裏的問題是單元測試的一些運行者在完成之後會強制關閉(終止)由單元測試啓動的所有進程。如果以前打開的話,BeyondCompare工作的原因是沒有通過單元測試啓動進程。

我看到這種情況發生在兩個主要方式
1)測試運行通過一些版本的Resharper測試亞軍。
解決這個問題的方法似乎是轉移到最新版本的resharper。另外,可以通過VisualStudio的測試運行通過一些版本的測試設置文件在這裏運行測試

2)試運行.runsettings爲MSTEST
工作似乎只是刪除測試設置文件,雖然我相信實際的線是

KeepExecutorAliveAfterLegacyRun 

更多在:http://msdn.microsoft.com/en-us/library/jj635153.aspx

+0

很酷,KeepExecutorAliveAfterLegacyRun正是我所需要的!使用VS2013測試運行器或ReSharper's時,無論使用runsettings文件,testsettings文件還是沒有設置,都會出現該問題。但是在runsettings文件中設置該值會修復它! –

0

如果你有.vsmdi和.testrunco​​nfig文件(從Visual Studio 2008),你可以通過簡單地刪除這兩個文件解決問題。