jeudi 3 mars 2016

unit test repetition issue

Tests are here and they are extremely repetitive, which I would like to change…

     [TestClass]
    public class CompareDataTest
    {
private void GenerateTerms(int firstTerm, int secondTerm, out TaughtUnit firstGrade, out TaughtUnit secondGrade)
        {
            firstGrade = new TaughtUnit("foo");
            secondGrade = new TaughtUnit("bar");
        }

        [TestMethod]
        public void CompareResultsTest1()
        {
            var firstGrade = new TaughtUnit("foo");
            firstGrade.Percentage.Add("GRADE", 38);
            var secondGrade = new TaughtUnit("foo");
            secondGrade.Percentage.Add("GRADE", 70);
            var oldTerm = new List<TaughtUnit>() { firstGrade };
            var newTerm = new List<TaughtUnit>() { secondGrade };
            var rankBefore = firstGrade.Percentage;
            var rankNow = secondGrade.Percentage;
            var messages = Program.CompareData(oldTerm, newTerm);

            Assert.AreEqual(0, messages.Count);
        }

        [TestMethod]
        public void CompareResultsTest2()
        {
            var firstGrade = new TaughtUnit("foo");
            firstGrade.Percentage.Add("GRADE", 0);
            var secondGrade = new TaughtUnit("foo");
            secondGrade.Percentage.Add("GRADE", 35);
            var oldTerm = new List<TaughtUnit>() { firstGrade };
            var newTerm = new List<TaughtUnit>() { secondGrade };
            var rankBefore = firstGrade.Percentage;
            var rankNow = secondGrade.Percentage;
            int gradeOld = 0; int gradeNew = 10;
            var getGradeOld = firstGrade.Percentage.TryGetValue("GRADE", out gradeOld);
            var getGradeNew = secondGrade.Percentage.TryGetValue("GRADE", out gradeNew);
            var difference = gradeNew - gradeOld;

            var messages = Program.CompareData(oldTerm, newTerm);

            Assert.AreEqual(1, messages.Count);
            Assert.AreEqual("foo: GRADE rank has dropped by 30", messages[0]);
        }

I think I should use a private void before the set of tests, but I do not know how… How do I refer to what is created in private void?

Aucun commentaire:

Enregistrer un commentaire