Тест: этот тест падает - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть это:

namespace metric_system {

  public class Meter {

    public double meter { get; set; }

    public static Meter operator + ( Meter lhs, Meter rhs ) {
        return new Meter { meter = (lhs.meter + rhs.meter) };
    }
  }
}

Я пытаюсь проверить этот код:

namespace metric_system.Tests {
  public class Tests {
    [SetUp]
    public void Setup () {}

    [Test]
    public void Meter_operator_plus_Meter_10_Meter_50_return_60 () {

      metric_system.Meter m1        = new Meter { meter = 10 };
      metric_system.Meter m2        = new Meter { meter = 50 };
      metric_system.Meter expected  = new Meter { meter = 60 };


      metric_system.Meter actual = new Meter { meter = ( m1.meter + m2.meter) };

      Assert.AreEqual( expected, actual );
    }
  }
}

Этот тест падает .. помогите мне. Код падает на тесте. Этот объект принимает только объекты, объекты которых не работают ..

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Чтобы заставить Assert.AreEqual(expected, actual) работать, вам нужно реализовать сравнение на равенство (или создать средство сравнения на равенство):

namespace metric_system {

    public class Meter : IEquatable<Meter> {

        public double meter { get; set; }

        public static Meter operator + ( Meter lhs, Meter rhs ) {
            return new Meter { meter = (lhs.meter + rhs.meter) };
        }

        public override bool Equals(object other) => Equals(other as Meter);

        public bool Equals(Meter other) => !(other is null) &&
                                            (other.meter == meter);

        public override int GetHashCode() => HashCode.Combine(meter);
    }
}

Кроме того, если вы сделаете meter неизменным, ваша сущность будет качество для структуры .

0 голосов
/ 19 апреля 2020

Вы не должны сравнивать объекты, используйте для сравнения свойство 'meter'.

double precision = 0.1;
Assert.AreEqual(60, actual.meter, precision);

https://docs.microsoft.com/en-US/dotnet/api/microsoft.visualstudio.testtools.unittesting.assert.areequal?redirectedfrom=MSDN&view=mstest-net-1.2.0#Microsoft_VisualStudio_TestTools_UnitTesting_Assert_AreEqual_System_Double_System_Double_System_Double_

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...