6

To jest dziwne, ale nagle straciłem ExpectedExceptionAttribute, pracując dla mnie na drugi dzień. Nie wiem, co poszło nie tak. Używam VS 2010 i VS 2005 side-by-side. To nie działa w VS 2010. Test ten powinien zakończyć się pomyślnie, ale to się nie udaje:ExpectedExceptionAttribute nie działa w MSTest

[TestMethod] 
[ExpectedException(typeof(ArgumentNullException))] 
public void Test_Exception() 
{ 
    throw new ArgumentNullException("test"); 
} 

Jakieś pomysły? To naprawdę sux.

+0

Otrzymuję to samo, ale nie mogę znaleźć nic na ten temat. Ktoś inny ma ten sam problem. http://stackoverflow.com/questions/2628965/expectedexception-on-testmethod-visual-studio-2010 –

+0

Czy debugujesz lub uruchamiasz test? – Joop

Odpowiedz

1

Miałem ten sam problem, ale w końcu udało się go uruchomić. Nie bardzo jestem pewien jak, ale tutaj jest lista rzeczy, które zrobiłem między tym, że nie działa, kiedy zaczął działać ponownie.

  • Stary projekt w fazie testów do .NET 4
  • Wyłączony test pokrycia
  • toczone test pokrycia ponownie włączyć
  • zostawił RebuildAll nad projektem testowym

nie pewny który świder to jednak. W każdym razie, miej nadzieję, że to pomaga!

12

Nie wskrzeszać martwej nici, ale natknąłem się na to, kiedy to nagle stało się dla mnie, na wypadek, gdyby mogło pomóc innym. W końcu odkryłem, na czym polega problem, który może korelować z tym, co znalazł Jon. Wydaje się, że atrybut ExpectedException działa tylko wtedy, gdy projekt zostanie rozpoznany jako projekt testowy. (Nie tylko zespół Net)

Unload projekt, edytować plik csproj i sprawdzić, czy jest tam następujące ustawienia:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 

(Zakładając, że projekt VS2010) przeładować projekt i odbudować. Testy ExpectedException powinny teraz przejść pomyślnie.

Wpadliśmy w tej kwestii podczas standaryzacji testów z NUnit do MSTest (dziękuję TFS CI Build) i okazało się, że po wymianie Assert.Throws <> piękna prostota & elastyczność [ExpectedException (typ)] bzdura, (nie wspominając tracąc [TestCase()]!) Testy ExpectedException nie powiodły się bez powodu. Przełącz z powrotem na NUnit z ExpectedException, bez problemu, MSTest odmawia uruchomienia go.

trzeba powiedzieć, że będzie pchanie uzyskać NUnit z powrotem, po znalezieniu: http://blog.shawnewallace.com/2011/02/running-nunit-tests-in-tfs-2010.html

+1

Witaj, Steve! Nie ma wstydu odpowiadać na stare pytania, szczególnie z tak wspaniałą odpowiedzią! Dzięki! – tmesser

+0

Właściwie używam konstruktu Nunit (Assert.throws) z wnętrza MsTest ;-) – Konstantin

+0

To również zadziałało dla mnie w VS2012. Ale to jeszcze dziwniejsze: mam wiele bibliotek klasowych z tym ExpectedException, który działa jak urok. Nawet obrażający projekt kiedyś pracował i nagle przestał działać. – JotaBe

1

Wątek pojawił się w wyszukiwarce Google i od natknąłem to dzisiaj też, ale z innego powodu, będę dodaj tutaj innego możliwego anser.

Miałem testy jednostkowe dla niektórych funkcji z atrybutem [ExpectedException] w miejscu, ale ostatnia aktualizacja kodu wykonała funkcję, która została przetestowana async w celu poprawy wydajności.

Spowodowało to awarię tych testów jednostkowych. Prostym rozwiązaniem było również dokonać asynchronicznie jednostki testowej, powrót zadaniem i czekają funkcji-call:

[TestMethod] 
[ExpectedException(typeof(Exception))] 
public async Task UnitTestAnAsyncFunction() 
{ 
    await sut.DoStuffAsync(); 

    //Assert 
    //ExpectedException 
} 
0

mam inną odpowiedź, która nie ma potrzeby, aby edytować plik csproj. Wygląda na to, że główną przyczyną było brakujące odniesienie. Dodałem Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll do referencji projektu i using Microsoft.VisualStudio.TestTools.UnitTesting; do plików kodu.Dll można znaleźć w

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\ 

lub

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\ 

Mam nadzieję, że mogę pomóc ktoś zaoszczędzić trochę czasu.

Powiązane problemy