0
スネークゲームを作成していて、 "snake-food"が "eaten"のときに変更されることをテストしたいと思っています。位置を設定するためのNUnitテスト#
だから私はちょっとこのようになりますシンプルなポジションクラスがあります。
public class Position
{
public int XCoordinate {get; set;}
public int YCoordinate {get; set;}
public Position(int x, int y)
{
XCoordinate = x;
YCoordinate = y;
}
}
とテストでは、私は食品の更新の位置を食べたときにことを確認したいです。オブジェクトを比較する良い方法はないように思えるので、私はこのようなアサート(簡便法)でこれをやっている:食品ポジションがされている可能性があるので、私の解決策は悪いものであることを
[Test]
public void AssertFoodSpawnsOnNewLocationWhenEaten()
{
int expectedX = _sut.Food.Pos.XCoordinate;
int expectedY = _sut.Food.Pos.YCoordinate;
_sut.FeedSnake();
int resultX = _sut.Food.Pos.XCoordinate;
int resultY = _sut.Food.Pos.YCoordinate;
Assert.AreNotEqual(expectedX, resultX);
Assert.AreNotEqual(expectedY, resultY);
}
を実現しますたとえ困難であっても更新されたexpectedX
とresultX
は等しいです。
誰かがこれをどのようにテストすることができるヒントを持っていますか?あなたはの何らかの種類をして、x座標とy座標が等しくないかどうかを調べることができますか?
ありがとうございました!
"オブジェクトを比較するには良い方法がないようです"確かに、あなたの 'Position'クラス内で' Equals'と 'GetHashCode'をオーバーライドしています。これにより、 'Assert.AreEqual(expected、myInstanceOfPosition)'を使用することができます。これとは別に、 'expectedX'と' resultX'が等しくても、何かをテストする方法が分かっていないときは、変更する可能性があります。 – HimBromBeere
申し訳ありません、多分私は不明でした。食物はランダムに生成された位置を取得します。私は、食べ物の新しい位置が同じx座標を持つことができますが、y座標は異なる可能性があることを意味しました。 – Jesper
@HimBromBeereオブジェクトの比較方法の例を教えてください。 – Jesper