2014-03-03 95 views
0

有沒有從tSQLt.RunAll運行時得到任何反饋的方法。在具有高%DB單元測試覆蓋率的非常大的項目中,此命令需要很長時間。我希望能夠看到(並顯示)此命令的進度。可能嗎?執行tSQLt.RunAll時的進度反饋

回答

2

如果我想看到tSQLt在測試一個長長的清單已達到了,我用

SELECT Class,TestCase,Result FROM tSQLt.TestResult (NOLOCK) 

這表明在當前執行的執行迄今測試的結果。 您可以加入到tSQLt.Tests:直到測試通過,失敗或錯誤

SELECT Tests.TestClassName,Tests.Name,TestResult.Result 
FROM tSQLt.Tests (NOLOCK) 
LEFT JOIN tSQLt.TestResult (NOLOCK) 
ON tSQLt.Tests.TestClassName = tSQLt.TestResult.Class 
AND tSQLt.Tests.Name = tSQLt.TestResult.TestCase 

結果列將是NULL。我正在使用NOLOCK,所以讀起來很髒,但這對於我的目的來說是足以建立進度,並防止正在進行的測試的任何中斷。

希望有幫助,

戴夫。

1

我所做的是創建一個t4模板,然後通過nunit運行測試作爲單獨的測試。這意味着它也很容易與您的CI服務器集成。 你可以看看我怎麼做here

另外,這樣的事情可能會起作用。

set nocount on  
create table #tests (id int identity(1,1), testclassname varchar(250), testname varchar(500)) 
go 

insert #tests (testclassname, testname) 
select testclassname, name 
from tSQLt.Tests 

declare @sqlCmd varchar(1000) 
declare @id int 
while exists(select * from #tests) 
begin 
    select @id = min(id) from #tests 
    select @sqlCmd = 'exec tsqlt.run ''' + testclassname + '.' + testname +''' ' from #tests where [email protected] 
    exec(@sqlCmd) 

    delete from #tests where id = @id 
end 

drop table #tests 
go 

這將使你在消息窗口中的每個單獨測試的結果,但它不是那麼容易跟隨,因爲他們從底部滾動正在執行測試。

RedGate還有一個test runner,您可以安裝它,它允許您在Management Studio中運行測試,並通過GUI爲您提供反饋。