C#执行Assert.AreEqual(,,delta)的方法,但返回bool

C#执行Assert.AreEqual(,,delta)的方法,但返回bool,c#,unit-testing,debugging,testing,C#,Unit Testing,Debugging,Testing,假设我们有一个积分班 public class Point { public double x; public double y; ... public isEqual(Point p) { // here we worry about epsilons } } 例如,一些TestProject计算三角形的中位数,并确认(通过比较x和y坐标)返回的点是正确的。但我们需要引入公差 现在,如果我们这样做,我们会被诅咒,如果我们不这样做,我们会

假设我们有一个积分班

public class Point {
    public double x;
    public double y;
    ...
    public isEqual(Point p) {
        // here we worry about epsilons
    }
}
例如,一些TestProject计算三角形的中位数,并确认(通过比较x和y坐标)返回的点是正确的。但我们需要引入公差

现在,如果我们这样做,我们会被诅咒,如果我们不这样做,我们会被诅咒:

情景1 C#方便地重载Assert.AreEqual()以处理公差。 我们将比较放在测试项目中。我们使用Assert.AreEqual()并且一切都很好

但是如果我们在十个不同的项目中编写十个不同的测试,我们就没有封装点比较。它分散在各处,这是不好的

情景2 我们将比较与Point类放在一起。现在,任何时候我们需要比较两个点,我们只要把这两个点发送给Point类,我们就得到了答案

但是我们不能再使用Assert.AreEqual()。所有资产必须位于TestProject中

我们必须使用我们自己的比较仪


接下来的问题是:Assert.AreEqual()的C#方式是什么,但是返回bool?

您可以共享您尝试测试的代码和测试代码吗?
Assert.AreEqual
是一个单元测试工具,但听起来您谈论的不仅仅是使用它。您可以拥有一个包含一些常见测试代码的共享库,包括这一点比较吗?然后,您的所有十个测试项目都可以引用该共享库,并且您的Point类不需要任何测试代码。您正在使用哪个测试框架?你至少应该能够做
Assert.IsTrue(p1.isEqual(p2))
或者
Assert.AreEqual(p1,p2,newpointequalitycomparer(tolerance))
。也许我不理解这个问题,但答案不是像使用
Assert.IsTrue(point1.isEqual(point2))那么简单吗
?您可以共享您尝试测试的代码和测试代码吗?
断言。AreEqual
是一个单元测试工具,但听起来您谈论的不仅仅是使用它。您可以拥有一个包含一些常见测试代码的共享库,包括此点比较吗?然后,您的所有十个测试项目都可以引用该共享库,并且您的Point类不需要任何测试代码。您正在使用哪个测试框架?你至少应该能够做
Assert.IsTrue(p1.isEqual(p2))
或者
Assert.AreEqual(p1,p2,newpointequalitycomparer(tolerance))
。也许我不理解这个问题,但答案不是像使用
Assert.IsTrue(point1.isEqual(point2))那么简单吗?