Пример соглашения об именовании Nunit Test - PullRequest
0 голосов
/ 12 ноября 2018

Начал программировать, я смотрю на какое-то соглашение об именовании модульных тестов: это популярное. MethodName_StateUnderTest_ExpectedBehavior

https://dzone.com/articles/7-popular-unit-test-naming

Если у меня есть класс ParseVendorSupply,

Что бы я назвал первым модульным тестом? FromCsv_ParseCorrectly_IsGood

Что бы я назвал вторым модульным тестом? FromCsv_ParseCorrectly_IsIncorrect

//Electronics store 
public class ParseVendorSupply
{
    public VendorSupply FromCsv(string csvLine)
    {
        string[] values = csvLine.Split(',');
        VendorSupply vendorsupply = new VendorSupply();
        vendorsupply.VendorId = Convert.ToInt16(values[0]);
        vendorsupply.ProductId = Convert.ToInt16(values[1]);
        vendorsupply.Quantity = Convert.ToInt16(values[2]);
        return vendorsupply;
    }
}

public class ParseVendorSupplyTest
{

    ParseVendorSupply parseVendorSupplytest = new ParseVendorSupply();

    [Test]
    public void FromCsv_ParseCorrectly_IsGood()
    {
        string csvLineTest = "5,8,3";
        VendorSupply vendorsupply = parseVendorSupplytest.FromCsv(csvLineTest);
        Assert.AreEqual(5, vendorsupply.VendorId);
        Assert.AreEqual(8, vendorsupply.ProductId);
        Assert.AreEqual(3, vendorsupply.Quantity);
    }
    [Test]
    public void FromCsv_ParseCorrectly_IsIncorrect()
    {
        string csvLineTest = "5,testdatatype,3,testextrawords";
        VendorSupply vendorsupply = parseVendorSupplytest.FromCsv(csvLineTest);
        Assert.AreEqual(5, vendorsupply.VendorId);

    }
}

1 Ответ

0 голосов
/ 12 ноября 2018

То, что вы делаете, совершенно хорошо.(Я сделаю одно предложение ниже.)

Как уже отмечалось, здесь есть много места для мнений.Но это подводит меня к этому ответу ...

Составьте соглашение, понятное и понятное тем, кто должен его понять.Это вы и все товарищи по команде, которые работают в коде.Никто другой не должен соглашаться.Но также подумайте о том, что ваше «будущее я» тоже хочет понять.

Кроме того, если вы решите измениться, просто сделайте это.Нет необходимости в согласованности между файлами , если , вы упростили понимание.Так что не возвращайтесь и не меняйте другие файлы только для согласованности.Не устанавливайте правил, создавайте шаблоны, которые возникают из ваших собственных индивидуальных действий.

Один момент, касающийся соглашения, которое вы предварительно приняли.Похоже, вы делаете второй и третий компоненты примерно одинаковыми.Если это так, они избыточны, и вы не должны использовать оба.Альтернативно, заставьте второе быть о условии, которое приводит к результату третьего.Например,

FromCsv_WhenWellFormed_ParsesCorrectly()
FromCsv_WhenBadlyFormed_GivesError()

Однако, если бы это был я, я бы, вероятно, полностью отбросил третью часть, поскольку совершенно очевидно, каким должен быть результат, когда данные хорошо или плохо сформированы.

При желании вы можете иметь более одного плохо сформированного (или даже правильно сформированного) теста, используя разные имена.Либо сделайте правильные и неверные тесты в тестовых случаях, предоставив данные в качестве параметра.

...