2012-09-03 73 views
0

我的一个测试是间歇性失败。我现在想要经常执行测试。如何在单次测试中多次执行单元测试?

我写了一个小批处理文件

:loop 
mstest /testcontainer:"path/test.dll" /test:"mytest" 
set /a COUNT=%COUNT%+1 
if %COUNT GTR %MAX% goto end 
goto loop 

虽然这工作得很好,但输出是没有意义,或能说明问题。假设我运行这个测试100次,我收到了短信说

Loading ... 
Starting execution ... 
Results 
Passed/Failed 1 
-------- 
Total 1 

和100个带有.trx文件将被创建... 100次

其实我是想是有这样

输出什么
Passed 97 
Failed 3 
-------- 
Total 100 

只有一个.trx文件。

我以某种方式怀疑可能在单次测试运行中多次运行测试,因为我没有在mstest /help输出上找到任何参数。

有没有办法创建一个尽可能接近给定请求的输出?

+1

你真的应该专注于修复导致间歇性故障的代码... –

+3

测试应该是确定性的,即有一个结果。软件通常不应该像Schroedinger的Cat一样。 –

+0

@DanielHilgarth这就是为什么我需要一个频繁运行测试的批处理... – Em1

回答

0
setlocal enabledelayedexpansion 
set passed=0 
set failed=0 
for /l %%x in (1,1,%max%) do (
    mstest /testcontainer:"path/test.dll" /test:"mytest" 
    if !errorlevel!==0 (
    set /a passed=passed+1 
) else (
    set /a failed=failed+1 
) 
) 
echo Passed %passed% > %~n1.trx 
echo Failed %failed% >> %~n1.trx 
echo --------- >> %~n1.trx 
echo Total %Max% >> %~n1.trx 
endlocal