gpt4 book ai didi

.net - Xunit : Perform all 'Assert' ions in one test method?

转载 作者:行者123 更新时间:2023-12-01 06:20:09 25 4
gpt4 key购买 nike

是否可以告诉 xUnit.net 执行所有操作,例如Assert.True() 在一种测试方法中?基本上在我们的一些使用/测试用例中,所有断言在逻辑上都属于一个相同的测试“范围”,我有例如像这样:

    [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"));
}

现在如果第一个 Assert.True(...) 失败,其他的没有执行/检查。我不想将这七个断言分解为单独的方法,因为它们在逻辑上确实属于一起(只有当所有七个断言一起通过时,TC 才完全“通过”)。

最佳答案

AAA 的重点是尽可能简化每个部分并保持重点,以便读者可以快速理解测试并轻松隔离失败原因。

这里有 7 个不同的事实,它们共同构成了一个理论。因此,您应该创建一个 [Theory],其中有 7 组 [InlineData] 代表期望。参见 http://blog.benhall.me.uk/2008/01/introduction-to-xunitnet-extensions.html举个例子。

如果重新执行 Arrange/Act 是一个问题,那么您应该通过在测试类的构造函数中执行此操作来使其成为“夹具”(用 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 ) );
}
}

关于.net - Xunit : Perform all 'Assert' ions in one test method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1846345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com