2015-03-08 4 views
0

Все работает над MSUnit, кроме моего Assert, я проверил и обнаружил, что он немного отличается в MSUnit, чем nUnit, прошел через сообщение в блоге и делал то же самое, но все еще получал ошибку при отладке теста.MSUnit Assert not Working

Когда я проверяю мой бывший в модульном тесте (после броска ошибки), сообщение, которое я получаю «ошибка приложения», который терпит неудачу испытание, как ожидается, сообщение отличается

Любые идеи?

[TestMethod] 
    [ExpectedException(typeof(InvalidAreaException))] 
    public void GetAreaWithNegativeValueTest() 
    { 
     try 
     { 
      Utility.GetArea(2, -1, 2); 

     } 
     catch (InvalidAreaException ex) 
     { 
      Assert.AreEqual ("Inputs must be positive numbers", ex.Message); 
      throw; 
     } 
    } 

//Exception Class 
     public class InvalidAreaException : ApplicationException, ISerializable 
    { 
    public string msg; 

    public InvalidAreaException(string message) 
    { 
     //msg = message; 
    } 
} 

//Actual Method to be tested 
public static double GetArea(int arg1, int arg2, int arg3) 

    { 
     double area = 0d; 

     if ((arg1 < 0) || (arg2 < 0) || (arg3 < 0)) 
     { 
      throw new InvalidAreaException("Inputs must be positive numbers"); 
     } 
    } 
+0

Ваш метод GetArea не имеет оператора return, он даже компилируется? – Paolo

+0

он не называется MSUnit, он называется средой MSTests, в любом случае попытайтесь удалить try/catch из метода: «GetAreaWithNegativeValueTest», потому что вы хотите, чтобы метод правильно определял исключение? –

+0

Я бы пересмотрел ваш модульный тест. Хороший тест должен иметь только один путь через код (иначе вы рискуете логической проблемой в самом тесте). Выполнение этого, скорее всего, укажет на вашу проблему. –

ответ

0

Изменение C'tor из InvalidAreaException к: и тогда ваш тест будет проходить

public class InvalidAreaException : ApplicationException, ISerializable 
    { 

     public InvalidAreaException(string message):base(message) 
     { 
     } 
    } 

ваш Assert против собственности сообщений, которая является собственностью базового класса, и вы забыли заполнить эту недвижимость