C#单元测试 - 测试返回方法

时间:2014-09-14 12:49:36

标签: c# asp.net asp.net-mvc unit-testing tdd

尝试对单元测试有基本的了解。我创建了一个模型类,其中包含一个返回“Person”对象的方法。现在我想测试这个方法“GetPerson”是否实际上返回一个Person对象(P1)。

遵循“安排,行动,断言iv'e the人类的模式。我只是不知道如何从这里开始。希望得到一些帮助。

人类:

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


        }
    }

2 个答案:

答案 0 :(得分:1)

您可以使用以下命令测试对象的成功创建:

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

对于测试课程来说,这总是一个很好的第一单元测试。

答案 1 :(得分: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方法的测试。