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中获取它,以便我只有一个Assert-line? 我正在谈论这个:
我知道TestCase和TestCaseSource是静态的......但还有另一种方法吗?
答案 0 :(得分:1)
执行此测试的最佳方法是使用尚未实现的多个断言功能,以便即使某些断言失败,所有断言也会运行。
由于尚未提供,我可以理解您希望将其分为多个测试,每个测试都会单独报告。当然,使用测试用例可以实现这一点,即使这在逻辑上只是一次测试。
测试用例源方法必须是静态的这一事实并不能阻止它创建CGrunddaten类的实例。测试本身只是比较两个双打的平等,而不需要知道关于该类的任何事情。
你可以这样写:
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块中。