无论测试目标是成功还是失败,如何在“测试”目标运行后运行某个清理任务(如 尝试......终于 用C#/ Java构造。
无论测试目标是成功还是失败,如何在“测试”目标运行后运行某个清理任务(如 尝试......终于 用C#/ Java构造。
Target元素有一个 的OnError 您可以将属性设置为在错误时执行的目标,但由于它仅在目标出错时才执行,因此它只解决了一半的情况。
您是否考虑过将目标链接在一起来代表您要执行的测试“步骤”?
<PropertyGroup>
<TestSteps>TestInitialization;Test;TestCleanup</TestSteps>
</PropertyGroup>
'TestInitialization'目标是您可以执行任何测试初始化的目标,'Test'目标执行测试,'TestCleanup'目标执行任何类型的测试后清理。
然后,使用。执行这些目标 CallTarget 任务,使用 RunEachTargetSeparately 属性设置为 真正。这将执行 所有 目标,无论成功与否。
完整的样本如下:
<Project DefaultTargets = "TestRun"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<!-- Insert additional tests between TestInitialization and TestCleanup as necessary -->
<PropertyGroup>
<TestSteps>TestInitialization;Test;TestCleanup</TestSteps>
</PropertyGroup>
<Target Name = "TestRun">
<CallTarget Targets="$(TestSteps)" RunEachTargetSeparately="True" />
</Target>
<Target Name = "TestInitialization">
<Message Text="Executing Setup..."/>
</Target>
<Target Name = "Test">
<Message Text="Executing Test..."/>
<!-- this will fail (or should unless you meet the conditions below on your machine) -->
<Copy
SourceFiles="test.xml"
DestinationFolder="c:\output"/>
</Target>
<Target Name = "TestCleanup">
<Message Text="Executing Cleanup..."/>
</Target>
</Project>
Target元素有一个 的OnError 您可以将属性设置为在错误时执行的目标,但由于它仅在目标出错时才执行,因此它只解决了一半的情况。
您是否考虑过将目标链接在一起来代表您要执行的测试“步骤”?
<PropertyGroup>
<TestSteps>TestInitialization;Test;TestCleanup</TestSteps>
</PropertyGroup>
'TestInitialization'目标是您可以执行任何测试初始化的目标,'Test'目标执行测试,'TestCleanup'目标执行任何类型的测试后清理。
然后,使用。执行这些目标 CallTarget 任务,使用 RunEachTargetSeparately 属性设置为 真正。这将执行 所有 目标,无论成功与否。
完整的样本如下:
<Project DefaultTargets = "TestRun"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<!-- Insert additional tests between TestInitialization and TestCleanup as necessary -->
<PropertyGroup>
<TestSteps>TestInitialization;Test;TestCleanup</TestSteps>
</PropertyGroup>
<Target Name = "TestRun">
<CallTarget Targets="$(TestSteps)" RunEachTargetSeparately="True" />
</Target>
<Target Name = "TestInitialization">
<Message Text="Executing Setup..."/>
</Target>
<Target Name = "Test">
<Message Text="Executing Test..."/>
<!-- this will fail (or should unless you meet the conditions below on your machine) -->
<Copy
SourceFiles="test.xml"
DestinationFolder="c:\output"/>
</Target>
<Target Name = "TestCleanup">
<Message Text="Executing Cleanup..."/>
</Target>
</Project>
或者使用 <OnError>
在错误的情况下调用你的目标,和 DependsOnTargets
要么 CallTarget
在正常情况下调用相同的目标。