9

私はこの方法を持っています:

public DataSourceResult GetProjectBySpec(int projectId, int seasonId, int episodeId)
        {
            using (var rep = RepositoryHelper.GetTake2Repository<ITake2RepositoryBase>())
            {
                var spec = new ProjectCrewsByProjectSpec(projectId, seasonId, episodeId);

                var personList = rep.GetList<ProjectDGACrew>(spec).Select(p => new
                {
                    //big query...
                    .ToDataSourceResult();

                return personList;
            }
        }

このための単体テストを作成する必要があります。

私の最初の質問は次のとおりです。

  1. 私は何のためにテストしていますか?メソッドがリストを返すかどうかを確認するためだけにテストしていますか?

  2. もしそうなら、どうやってそれをテストしますか?

これは私がこれまでに持っているものです:

    [TestClass]
    public class CrewControllerTest
    {
        [TestMethod]
        public void GetProjectCrewsBySpecTest()
        {
            // arrange
            int projectId = 1;
            int seasonId = 2;
            int episodeId = 3;

            // act
            var crewController = new CrewController();
            DataSourceResult dsr = crewController.GetProjectCrewsBySpec(1, 2, 3);

            // assert
            // what or how do I assert here? Am I just checking whether "dsr" is a list? How do I do that?
        }
    }
4

4 に答える 4

1

私はこのようにテストを書きます:

  1. コードのパスごとにテストを記述します。
  2. 境界条件のテストを書きます。例: リスト内のゼロ、1 つ、または 2 つのアイテム。不正なパラメータなど
  3. ネガティブテストを書きます。無用なテストを無数に書くことができるので、これらは最も困難です。良い例は、変更してはいけないものが変更されていないことを確認することです。

幸運を

于 2013-07-11T00:59:44.603 に答える
0

これは、その中のデータもテストできるより簡単な方法です。離れたところから変更します。

[TestClass]
    public class CrewControllerTest
    {
        [TestMethod]
        public void GetProjectCrewsBySpecTest()
        {
          // arrange
          const String ExpectedOutput = "";
          int projectId = 1;
          int seasonId = 2;
          int episodeId = 3;

          // act
          var crewController = new CrewController();
          var resultList= crewController.GetProjectCrewsBySpec(1, 2,3) as DataSourceResult;
          var someInsideData = resultlist.FirstOrDefault().GetType().GetProperty("PropertyName").GetValue(resultList.FirstOrDefault(),null);

          // assert
          Assert.AreEqual(someInsideData , ExpectedOutput);          
        }
}
于 2013-08-14T18:45:26.137 に答える