Jör*_*ann 2 .net xunit.net assertions arrange-act-assert
有可能告诉xUnit.net Assert.True()在一个测试方法中执行所有操作吗?基本上在我们的一些use/testcases中,所有断言在逻辑上都属于同一个"范围"的测试,我有这样的东西:
[Fact(DisplayName = "Tr-MissImpl")]
public void MissingImplementationTest()
{
// parse export.xml file
var exportXml = Libraries.Utilities.XML.GenericClassDeserializer.DeserializeXmlFile<Libraries.MedTrace.ExportXml>(
ExportXmlFile);
// compare parsed results with expected ones
Assert.True(exportXml.ContainsRequirementKeyWithError("PERS_154163", "E0032A"));
Assert.True(exportXml.ContainsRequirementKeyWithError("PERS_155763", "E0032A"));
Assert.True(exportXml.ContainsRequirementKeyWithError("PERS_155931", "E0032A"));
Assert.True(exportXml.ContainsRequirementKeyWithError("PERS_157145", "E0032A"));
Assert.True(exportXml.ContainsRequirementKeyWithError("s_sw_ers_req_A", "E0032A"));
Assert.True(exportXml.ContainsRequirementKeyWithError("s_sw_ers_req_C", "E0032A"));
Assert.True(exportXml.ContainsRequirementKeyWithError("s_sw_ers_req_D", "E0032A"));
}
Run Code Online (Sandbox Code Playgroud)
现在,如果第一个Assert.True(...)失败,则不执行/检查其他的.我宁愿不将这七个断言分解为单独的方法,因为它们确实在逻辑上属于一起(如果所有七个都通过一起,则TC仅被'完全传递'.
AAA的重点是尽可能地简化每个部分并使其集中,因此读者可以快速理解测试并轻松地找出故障原因.
你Fact这里有7个不同的s,它们共同组成一个Theory.所以你应该创建一套代表期望的[Theory]7套[InlineData].有关示例,请参见http://blog.benhall.me.uk/2008/01/introduction-to-xunitnet-extensions.html.
如果重新执行安排/法案是一个问题,那么你应该通过在测试类的构造函数中执行此操作来制作"夹具"(在xUnit测试模式中使用).
public class WithGenericClassDeserializer
{
var exportXml;
public WithGenericClassDeserializer()
{
// Or move this into the GivenExportXmlFile_ExpectedValueAtKeyShouldMatch
exportXml = Libraries.Utilities.XML.GenericClassDeserializer.DeserializeXmlFile<Libraries.MedTrace.ExportXml>( ExportXmlFile );
}
[Theory( DisplayName = "Tr-MissImpl" )]
[InlineData( "PERS_154163", "E0032A" )]
[InlineData( "PERS_155763", "E0032A" )]
[InlineData( "PERS_155931", "E0032A" )]
[InlineData( "PERS_157145", "E0032A" )]
[InlineData( "s_sw_ers_req_A", "E0032A" )]
[InlineData( "s_sw_ers_req_C", "E0032A" )]
[InlineData( "s_sw_ers_req_D", "E0032A" )]
public void GivenExportXmlFile_ExpectedValueAtKeyShouldMatch( string key, string value )
{
Assert.True( exportXml.ContainsRequirementKeyWithError( key, value ) );
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1063 次 |
| 最近记录: |