2014-09-14 4 views
0

Попытка получить базовое представление об модульном тестировании. Я создал класс модели, содержащий метод, который возвращает объект Person. Теперь я хочу проверить, действительно ли этот метод GetPerson возвращает объект Person (P1).Испытание модуля C# - Метод возврата теста

По образцу «Упорядочить, закон, утверждают Iv'e intanciated класс Person Я просто не знаю, как поступить здесь Оценил помощь

Person Класс:...

public class Person 
{ 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public Person(int id, string firstName, string lastName) 
    { 
     Id = id; 
     FirstName = firstName; 
     LastName = lastName; 
    } 

    Person p1 = new Person(1, "John", "Dhoe"); 

    public Person GetPerson() 
    { 
     return p1; 
    } 

} 

тест:

[TestClass] 
    public class UnitTest1 
    { 
     [TestMethod] 
     public void GetPersonTest() 
     { 
      //Arrange 
      Person p = new Person(1, "John", "Dhoe"); 


      //Act 



      //Assert 


     } 
    } 
+1

Вам не нужен тест для этого. Компилятор гарантирует, что это действительно «Личность». –

+0

Я уверен, что вы даже не можете запустить этот код. Не приводит ли это к 'StackoverflowException'? –

+0

@SriramSakthivel Метод OP GetPerson может быть статическим методом. Это кажется более подходящим для этого. –

ответ

0

Этот код действительно странно (и приведет к краху), но заполнить тест для этого случая точно:

[TestClass] 
public class UnitTest1 
{ 
    [TestMethod] 
    public void GetPersonTest() 
    { 
     //Arrange 
     Person p = new Person(0, "", "");  //note the change 

     //Act 
     Person result = p.GetPerson(); 

     //Assert 
     Assert.AreEqual(1, result.Id); 
     Assert.AreEqual("John", result.FirstName); 
     Assert.AreEqual("Dhoe", result.LastName); 
    } 
} 

Это не имеет смысла, потому что метод GetPerson всегда будет возвращать одного и того же человека, независимо от того, что вы передадите конструктору.

Кроме того, как отметил Sriram Sakthivel, этот код приводит StackoverflowException так или иначе :)

Тем не менее, этот тест для метода GetPerson, как его в настоящее время реализуется.

+1

Теперь я вижу свои ошибки в коде. Спасибо, я понимаю вашу точку зрения и попробую с лучшим примером. – koffe14

+0

@ KristofferAndersson Рассмотрите возможность размещения вашего уточненного вопроса в качестве другого сообщения и закрытия/удаления этого, чтобы избежать путаницы для читателей. – BartoszKP

1

Вы можете проверить для успешного создания объектов с:

var myPerson = new Person; 
Assert.IsInstanceOf(myPerson, typeof(Person)); 

Это всегда хороший первый тестовый модуль для tesing классов.

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