Вход на сайт
Резюме для программиста
89957 просмотров
Перейти к просмотру всей ветки
в ответ alex445 15.10.21 15:55, Последний раз изменено 15.10.21 16:10 (alex445)
Вопрос по юнит тестам. Конкретно по NUnit, но вообще любые подходят. Значения типа ExpectedValue, ExpectedResult и прочие подобные (в разных фреймворках по-разному называются) обычно высчитываются "руками" и подставляются как уже рассчитанные числа? Это ваще нормально? Везде где не посмотрю примеры - просто забиты готовые числа!
Вот пример ниже. Всю эту цепочку TestCase надо затестить, но каждый раз ExpectedResult я подставляю сам, высчитывая в уме, на кулькуляторе, ещё где.
class CharacterStatTests { CharacterStat _charStat; double _baseValue = 10; [SetUp] public void Setup() { _charStat = new CharacterStat(_baseValue); } [TestCase(2, ExpectedResult = 12)] [TestCase(-2, ExpectedResult = 8)] [TestCase(0, ExpectedResult = 10)] [TestCase(10.1, ExpectedResult = 20.1)] [TestCase(-20.2, ExpectedResult = -10.2)] public double AddModifier_AbsoluteValueModifier_ValueChangesCorrectly(double value) { _charStat.AddModifier(new StatModifier(value, StatModifierType.Absolute)); return _charStat.Value; } }
А по идее должно быть
_baseValue
+
value из TestCase
Чтобы руками не считать, а автоматизировать, вижу только вариант убрать ExpectedResult и всё считать внутри тестового метода, и потом делать Assert.AreEqual
[TestCase(2)] [TestCase(-2)] [TestCase(0)] [TestCase(10.1)] [TestCase(-20.2)] public void AddModifier_AbsoluteValueModifier_ValueChangesCorrectly(double value) { _charStat.AddModifier(new StatModifier(value, StatModifierType.Absolute)); var result = _charStat.Value; var expected = _baseValue + value; Assert.AreEqual(result, expected); }
Но это не так красиво, как затолкать ExpectedResult в атрибут!