2012-03-27 2 views
0

После this учебник и работа в неприятности.Ошибка Windows Phone

[TestMethod] 
    [ExpectedException(typeof(Exception))] 
    public void VerifyPropertyNameMethod_NonExistentPropertyString_ThrowsException() 
    { 
     var customer = new Customer() { FirstName = "June", LastName = "Smith" }; 
     var sut = new CustomerViewModel(_customerRepository, customer); 
     sut.VerifyPropertyName("NonExistentPropertyName"); 

    } 

Испытание не выполнено с сообщением, показанным ниже. Тест obviosuly выдает исключение, но он должен! Почему тест заканчивается?

VerifyPropertyNameMethod_NonExistentPropertyString_ThrowsException : FailedTest method FirstOnSiteWindowsPhoneApp.AppCode.Tests.Unit.CustomerViewModelTests.VerifyPropertyNameMethod_NonExistentPropertyString_ThrowsException threw exception: 
FirstOnSiteWindowsPhoneApp.AppCode.Domain.VerifyPropertyNameException: Exception of type 'FirstOnSiteWindowsPhoneApp.AppCode.Domain.VerifyPropertyNameException' was thrown. 
at FirstOnSiteWindowsPhoneApp.AppCode.ViewModel.CustomerViewModel.VerifyPropertyName(String propertyName) in CustomerViewModel.cs: line 29 
at FirstOnSiteWindowsPhoneApp.AppCode.Tests.Unit.CustomerViewModelTests.VerifyPropertyNameMethod_NonExistentPropertyString_ThrowsException() in CustomerViewModelTests.cs: line 53 
+0

По внешности вещи значение 'NonExistantPropertyName' помечено как недопустимое и исключение выбрано. Можете ли вы уточнить свой вопрос и, возможно, немного подробнее рассказать о том, где вы боретесь? – anothershrubery

ответ

4

Ваше ожидаемое исключение относится к неправильному типу. Оно должно быть:

[ExpectedException(typeof(VerifyPropertyNameException))] 

Вот что руководство показывает, как хорошо, так что я не знаю, почему у вас typeof(Exception) вместо ...

ExpectedExceptionожидает точно указанный тип исключения, а не только что-либо вытекающее из этого. Обратите внимание, что лично я предпочитаю Assert.Throws<...>(() => ...) таким образом, что вы ограничиваете объем кода, который, как ожидается, будет бросать, но это отдельный вопрос.