mercredi 7 septembre 2016

NUnit: How to pass TestCaseData from a non-static method?

my test fails because of : Message: The sourceName specified on a TestCaseSourceAttribute must refer to a static field, property or method.

This is my Code:

private const double MAX_DELTA = 0.01;
private Qv_LtM Qv_LtM_fr_Quer;

[SetUp]
public void init()
{
    Qv_LtM_fr_Quer = Din1946.Calc_Qv_LtM_fr_Quer(Qv_ges_Quer, false, false, 205.7d, 2.59d, 1.5d, 1.0d, (2d / 3d));
}

public IEnumerable<TestCaseData> TestCases_A()
{
        yield return new TestCaseData(72.5, Qv_ges_Quer.FL.Value, MAX_DELTA);
        yield return new TestCaseData(169.17, Qv_ges_Quer.RL.Value, MAX_DELTA);
        yield return new TestCaseData(241.67, Qv_ges_Quer.NL.Value, MAX_DELTA);
        yield return new TestCaseData(314.17, Qv_ges_Quer.IL.Value, MAX_DELTA);
    }


    [TestCaseSource("TestCases_A")]
public void MethodA(double expected, double value, double latitude)
      { Assert.AreEqual(expected, value, latitude);}

I used only static testcase-methods, but now I need data like: Qv_ges_Quer.IL.Value, Qv_ges_Quer.FL.Value.... so I deleted static

How can I use a non static testcase?

This is my old code which I want to reorginze, mybe you know another/better way then the way above:

public void MethodA(){
  Qv_ges qv_ges_NE = Din1946.Calc_Qv_ges_NE(205.7d);

  double Sum_Qv_ges_R_FL = 15d + 15d + 15d + 15d + 15d + 10d + 10d + 10d + 10d + 10d + 10d + 10d;
  Qv_ges Qv_ges_Quer = Din1946.Calc_Qv_ges_Quer(qv_ges_NE, Sum_Qv_ges_R_FL);

  Assert.AreEqual(72.5, Qv_ges_Quer.FL.Value, MAX_DELTA);
  Assert.AreEqual(169.17, Qv_ges_Quer.RL.Value, MAX_DELTA);
  Assert.AreEqual(241.67, Qv_ges_Quer.NL.Value, MAX_DELTA);
  Assert.AreEqual(314.17, Qv_ges_Quer.IL.Value, MAX_DELTA);
}

Aucun commentaire:

Enregistrer un commentaire