2016-03-03 3 views
0

тестов здесь, и они чрезвычайно повторы, которые я хотел бы изменить ...блока испытания повторение выпуск

 [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]); 
     } 

Я думаю, что я должен использовать частную пустоту перед набором тестов, но я не знаю, как ... Как я могу ссылаться на то, что создано в private void?

ответ

0

Объявите эту переменную на уровне тестового класса. Заполните настройку с помощью частного метода.

[TestClass] 
public class CompareDataTest 
{ 
    private TaughtUnit firstGrade; 
    private TaughtUnit secondGrade; 

    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() 
    { 
     GenerateTerms(..., ..., ..) 
     firstGrade.Percentage.Add("GRADE", 38); 
     secondGrade.Percentage.Add("GRADE", 70); 

     // rest of other things you want to set specific to the test. 

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

NUnit Framework имеет несколько способов передать источник значения для ваших тестов.

Например, я мог проверить Guid.Parse как так

public static Dictionary<int, string> Datas 
    { 
     get 
     { 
      return Enumerable.Range(0, 100) //Lots of numbers 
          .ToDictionary(x => x, x => Guid.NewGuid().ToString()); 
     } 
    } 

    [Test] 
    public void MultiCacheTest([ValueSource("Datas")] KeyValuePair<int, string> item) 
    {      
     //ACT ...Yes this tests Guid.Parse 100 times 
     var value = Guid.Parse(item.value); 

     Assert.AreEqual(item.Value, value.ToString());   
    } 

Идея заключается в том, чтобы пройти все необходимое purmutations протестировать все различные пути вашего блока может принять и позволить ключ пары как входное значение метода, причем значение пары является ожидаемым результатом. В вашем случае вы можете передать 2 процентных значения в качестве ключа «0 | 35» и «foo: ранг GRADE упал на 30». будет ожидаемым.

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