2015-12-11 5 views
-1

В моем домене слое я создаю много классов, который выглядит как этотАвтоматизация тестирования назначений свойств в конструкторе

public class Route 
{ 
    public Route(Location origin, Location destination) 
    { 
     this.Origin = origin; 
     this.Destination = destination; 
    } 
    public Location Origin { get; } 
    public Location Destination { get; } 
} 

Теперь мне нужно модульного тестирования этого конструктора

[Test] 
public void PropertiesAreAssigned() 
{ 
    var origin = new Location(...); 
    var destination = new Location(...); 
    var route = new Route(origin, destination); 
    route.Origin.Should().Be(origin); 
    route.Destination.Should().Be(destination); 
} 

У меня есть довольно многие из тех классов и тестов, которые очень похожи друг на друга. То, что я хотел бы, чтобы иметь какой-то метод, который просто принимает аргументы типа, а затем делает все испытания для меня, то есть

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

Я уверен, что я могу сделать это с немного размышлений, но, возможно, есть существующая библиотека, что делать? Дополнительные тесты приветствуются, например.

  • Проверка нулевого аргумента бросает правильное исключение
  • тестирования, что Equals и GetHashCode правильно

ответ

0

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

Может быть полезен конструктор тестирования со сложным поведением. Но я часто стараюсь не иметь никакого сложного поведения в моих конструкторах ^^

+0

Как вы их TDD? Я видел ошибки в конструкторах такого рода, поэтому почему бы не проверить их, если это легко (вот чего я пытаюсь достичь здесь). – Mikhail

+0

Если вы работаете в TDD, вам нужно написать только конструктор, необходимый вашему тесту, любое поле или объект должен быть создан непосредственно для нужд поведения. – rad

+0

. Вы можете найти больше ответов в этой теме http://stackoverflow.com/questions/357929/это-он-важно к блоку тест-а-конструктор – rad

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