2015-04-19 2 views
0

Я изучаю модульное тестирование и задаюсь вопросом, правилен ли этот поток программы тестирования модуля (как в Arrange, Act, Assert)?Я изучаю модульное тестирование и задаюсь вопросом, правилен ли этот поток программы тестирования модулей? как в Arrange, Act, Assert

[TestFixture] 
public class unitTest2 
{ 
    private CoffeeMaker coffemaker; 
    [Test] 
    public void TestMethod1()  // Testa metoden för kaffe med mjölk. Uppgift 2(b) 
    { 
     coffemaker = new CoffeeMaker();      //Arrange 
     string res = coffemaker.MakeDrink(new Coffee(true, false)); //Act 
     StringAssert.Contains("Coffee with milk", res);   //Assert 
    } 

} 
+0

Выглядит хорошо для меня! – user1777136

+0

Технически, да, это правильно. С точки зрения тестирования у меня есть несколько вопросов. Получается ли результат «Кофе с молоком» в зависимости от параметров или чего-то нового? Если вы планируете более одного метода тестирования, я предполагаю, что у вас есть такой план - тогда я бы реорганизовал инициализацию CoffeeMaker в метод инициализации. Но, я думаю, этот пример упрощен, особенно часть тестирования. – SayusiAndo

ответ

0

Выглядит хорошо, некоторые незначительные улучшения:

[TestFixture] 
public class CoffeeMakerUnitTests 
{ 
    [Test] 
    public void Test_MakeCoffeeWithMilk_Succeeds() 
    { 
     // Arrange 
     var coffemaker = new CoffeeMaker(); 

     // Act 
     string res = coffemaker.MakeDrink(new Coffee(true, false)); 

     // Assert 
     StringAssert.Contains("Coffee with milk", res); 
    } 
} 

аранжировать/Act/Утверждай картина более видно, что путь. И вы хотите избежать чего-либо, это не является локальным для вашей тестовой функции, потому что это вызовет проблемы только после того, как у вас будет вторая тестовая функция.

Ваша функция должна быть названа «Что происходит и что такое ожидаемый результат», потому что тогда вы можете увидеть, что не удается в результатах теста. «Ошибка UnitTest1» не очень описательна.

+0

Спасибо, ребята. Я сделал изменения, которые я надел, и теперь он отлично работает. –

0

Упорядочить, где вы настроили все для своего теста. Act - это то, где вы выполняете некоторые действия на SUT (System Under Test). Утверждение - это где вы проверяете результат этого действия.

Испытывает ли ваш тест эти рассуждения? Ага.

Вы также должны рассмотреть соглашение об именовании, которое вы используете. Вот один из следующих вариантов: MethodName_Scenario_ExpectedResult для имен методов испытаний:

[TestFixture] 
public class CoffeeMakerTests 
{ 
    [Test] 
    public void MakeDrink_CoffeeWithMilk_ReturnsCorrectString() // Testa metoden för kaffe med mjölk. Uppgift 2(b) 
    { 
     // Arrange 
     var coffeemaker = new CoffeeMaker(); 
     var coffeeWithMilk = new Coffee(true, false)); 

     // Act 
     var resultString = coffeemaker.MakeDrink(coffeeWithMilk); 

     // Assert 
     StringAssert.Contains("Coffee with milk", resultString); 
    } 
} 
+0

Спасибо за подсказку. Он работает сейчас. –

Смежные вопросы