是否可以对CMD / Batch文件进行单元测试或断言?

时间:2011-08-24 13:25:05

标签: .net unit-testing cmd dos

我写了一段代码,它应该解压缩压缩的.cmd文件并运行它们。

我想对它进行单元测试。到目前为止,我已经创建了一个非常简单的cmd文件(“echo hello world”)保存并压缩并用我的代码处理它。我可以验证它是否有效,因为如果我用“暂停”替换“echo hello world”,则会出现一个带有pause命令的命令窗口。但这显然不是自动化的。

有什么方法可以自动化这个测试,以便断言?例如,运行不同的DOS命令?

干杯, 马特

2 个答案:

答案 0 :(得分:1)

将批处理文件更改为echo Whatever > %temp%\MyResult.txt,然后检查文件是否存在且内容是否正确 (并删除之前和之后的文件)

答案 1 :(得分:0)

基本上,您可以只执行现有的“echo hello world”批处理文件并检查进程的退出代码。

按照惯例,退出代码为0意味着命令(或您的案例中的批处理文件)成功执行。

如果您的批处理文件有效(即正确解压缩),存在(即正确解压缩到预期位置),则不会强制退出代码不等于0(例如通过exit /b 1或通过无效语法等。 ),退出代码将始终为0.

在伪代码中,您的测试可能如下所示:

void Test()
{
    int rc = UnzipAndExecuteBatch();

    Assert.AreEqual(0, rc);
}

UnzipAndExecuteBatch()将是您要测试的实际代码。可能已修改,因此它返回cmd.exe的退出代码。