gpt4 book ai didi

unit-testing - NUnit 3.X - 如何将动态参数传递到 TestCase 或 TestCaseSource?

转载 作者:行者123 更新时间:2023-11-28 21:26:13 25 4
gpt4 key购买 nike

    CGrunddaten m_grdDaten;

[SetUp]
public void Init()
{
m_grdDaten = new CGrunddaten();
m_grdDaten.m_cwdGeoH.m_dW = 325.0;
m_grdDaten.m_cwd_tl.m_dW = 15;

}


[Test]
public void TestMethod()
{
m_grdDaten.RechGrdDaten();
Assert.That(m_grdDaten.m_cwd_pl.m_dW, Is.EqualTo(93344).Within(.1),"Außenluftdruck");
Assert.That(m_grdDaten.m_cwd_pl_neb.m_dW, Is.EqualTo(93147.3).Within(.1), "Außenluftdruck Nebenluftberechnung");
Assert.That(m_grdDaten.m_cwd_pl_pmax.m_dW, Is.EqualTo(92928.2).Within(.1), "Außenluftdruck max. zul. Unterdruck");
Assert.That(m_grdDaten.m_cwdRho_l.m_dW, Is.EqualTo(1.124).Within(.001), "Dichte Außenluft");
Assert.That(m_grdDaten.m_cwdRho_l_neb.m_dW, Is.EqualTo(1.184).Within(.001), "Dichte Außenluft Nebenluftberechnung");
Assert.That(m_grdDaten.m_cwdRho_l_pmax.m_dW, Is.EqualTo(1.249).Within(.001), "Dichte Außenluft max. zul. Unterdruck");
}

有没有办法在 TestCase 或 TestCaseSource 中获取它,以便我只有一个断言行?我在说这个:

  • m_grdDaten.m_cwd_pl.m_dW, 93344
  • m_grdDaten.m_cwd_pl_neb.m_dW, 93147.3
  • m_grdDaten.m_cwd_pl_pmax.m_dW, 92928.2....

我知道 TestCase 和 TestCaseSource 是静态的....但还有其他方法吗?

最佳答案

进行此测试的最佳方法是使用尚未实现的多重断言功能,这样即使某些断言失败,所有断言也会运行。

由于该功能尚不可用,我可以理解您希望将其纳入多个测试,并分别报告每个测试。当然,使用测试用例使这成为可能,即使这实际上在逻辑上只是一个测试。

测试用例源方法必须是静态的这一事实并不妨碍它创建 CGrunddaten 类的实例。测试本身只是比较两个 double 是否相等,不需要了解该类的任何信息。

你可以这样写:

private static IEnumerable<TestCaseData> GrundDatenDaten
{
var gd = new CGrunddaten();
gd.m_cwdGeoH.m_dW = 325.0;
gd.m_cwd_tl.m_dW = 15;
gd.RechGrdDaten();

yield return new TestCaseData(gd.m_cwd_pl.m_dW, 93344, .1, "Außenluftdruck");
// und so weiter
}

[TestCaseSource("GrundDatenDaten")]
public void testMethod(object actual, object expected, object tolerance, string label)
{
Assert.That(actual, Is.EqualTo(expected).Within(tolerance), label);
}

但是,我不太喜欢这样,因为它在数据源中隐藏了测试的真正功能。我认为您的原始公式是目前最好的方法,一旦该功能实现,您就可以将代码包含在 Assert.Multiple block 中。

关于unit-testing - NUnit 3.X - 如何将动态参数传递到 TestCase 或 TestCaseSource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40175007/

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