首页 > 解决方案 > 如何在对象类中对字符串值进行单元测试

问题描述

我正在尝试对使用 get/sets 在其中保存值的对象类进行单元测试。

我了解您将如何测试数字计算。

但是在没有像 x+y 这样的测试方法的情况下,如何测试 get/sets?

这是我需要测试的课程:

public class Train
{
    //Variables to hold each Trains details. Using different data types for specific entrys when necessary.
    private string _trainID;
    private string _departure;
    private string _destination;
    private string _type;
    private string _interStop;
    private TimeSpan _departureTime;
    private string _departureDay;
    private bool _sleeperBerth;
    private bool _firstClass;

    //Get/Set for setting Train ID value.
    public string TrainID
    {
        get { return _trainID; }
        set { _trainID = value; }
    }

    //Get/Set for setting departure value.
    public string Departure
    {
        get { return _departure; }
        set { _departure = value; }
    }

    //Get/Set for setting destination value.
    public string Destination
    {
        get { return _destination; }
        set { _destination = value; }
    }

    //Get/Set for setting type value.
    public string Type
    {
        get { return _type; }
        set { _type = value; }
    }

    //Get/Set for setting Intermediate Stop value.
    public string IntermediateStop
    {
        get { return _interStop; }
        set { _interStop = value; }
    }

    //Get/Set for setting Departure Time value.
    public TimeSpan DepartureTime
    {
        get { return _departureTime; }
        set { _departureTime = value; }
    }

    //Get/Set for setting Departure Day value.
    public string DepartureDay
    {
        get { return _departureDay; }
        set { _departureDay = value; }
    }

    //Get/Set for setting  Sleeper Berth value.
    public bool SleeperBerth
    {
        get { return _sleeperBerth; }
        set { _sleeperBerth = value; }
    }

    //Get/Set for setting First Class value.
    public bool FirstClass
    {
                get { return _firstClass; }
        set { _firstClass = value; }
    }
}

我还编写了某种我认为正确但失败的单元测试。有人可以让我了解我将如何做到这一点吗?

这是我自己做的测试(真的就这么简单吗?):

namespace TrainTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestTrainID()
        {
            Train train = new Train();

            string id = "1S45";

            train.TrainID = "1S45";

            Assert.AreEqual(id, train.TrainID);
        }
    }
}

标签: c#unit-testing

解决方案


您正在浪费时间重新发明轮子。

用自动实现的属性替换你的属性,突然之间你不需要你的 getter 和 setter 进行单元测试,因为编译器会创建所有的 getter/setter 代码并确保它是正确的:

public class Train
{
    public string TrainID { get; set; }
    public string Departure { get; set; }
    ... etc. ...
}

(因为您提到这是一个旨在让您开始进行单元测试的“玩具示例”:是的,您提出的测试很好。)


推荐阅读