Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Резюме для программиста

15.10.21 16:09
Re: Резюме для программиста
 
alex445 старожил
в ответ 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 в атрибут!

 

Перейти на