如何在单次测试中多次执行单元测试?
问题描述:
我的一个测试是间歇性失败。我现在想要经常执行测试。如何在单次测试中多次执行单元测试?
我写了一个小批处理文件
: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
输出上找到任何参数。
有没有办法创建一个尽可能接近给定请求的输出?
答
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
你真的应该专注于修复导致间歇性故障的代码... –
测试应该是确定性的,即有一个结果。软件通常不应该像Schroedinger的Cat一样。 –
@DanielHilgarth这就是为什么我需要一个频繁运行测试的批处理... – Em1