【发布时间】:2020-04-19 17:21:11
【问题描述】:
我有这个:
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 );
}
}
}
这个测试失败..帮助我。 Код падает на тесте этот ассерт принимает только объекты, пробывал подсовывать объекты не работает..
【问题讨论】:
-
你需要重写
Equals和GetHashCode,实现IEquatable或者使用结构体而不是类 -
正如@vc74所说你需要覆盖,这里是一个例子stackoverflow.com/a/61167207/2946329或stackoverflow.com/a/38434457/2946329
-
您的
actual变量应设置为m1 + m2,这就是在Meter类中定义+运算符的全部意义所在。您想测试重载的+运算符。
标签: c#