2012-06-17 19 views
6

Cześć, robię szachy jako sztuczny projekt z testowym rozwojem. Ale z jakiegoś powodu jedyną wiadomością, jaką dają moje testy, jest "test rzucił wyjątek: ...". I dlatego pomijając jedyną rzecz, która ma znaczenie. Zamiast bezpośrednio czytać błąd, muszę teraz kliknąć prawym przyciskiem myszy i wyświetlić szczegóły wyników testu. Próbowałem dodawać i usuwać kolumny, ale nie mogę wyświetlić całego komunikatu bezpośrednio.Test jednostki zgłasza wyjątek, ale nie widzi komunikatu:

Czy VS2010 można skonfigurować, aby komunikat o wyjątku był wyświetlany bezpośrednio dla każdego testu jednostkowego?

edit: Używam Standaard VS testów jednostkowych:

[TestClass] 
public class MiniMaxTest 
{ 
    [TestMethod] 
    public void TestConstructor() 
    { 
     throw new Exception("Must I click view details to see this?"); 
    } 
} 

dlaczego te pytania? Możecie odtworzyć te rzeczy. Testy debugowania lub uruchamiania dają takie same komunikaty: exception message remains hidden

+2

Czy możesz podać więcej szczegółów? Na przykład, jakie ramy testowania używasz (MSTest)? Jak wyglądają twoje testy? – stakx

+1

używasz MSTest? Jeśli nie, określ narzędzie do testowania urządzenia. Dlaczego po prostu nie debugujesz swojej metody testowej? – BrokenGlass

+0

Jeśli mam to prawo, mówisz, że pole lub kolumna, która pokazuje komunikat jest zbyt krótki, aby wyświetlić cały wyjątek? Cóż, testy jednostkowe nie powinny ciągle zawieść, więc "klikanie, aby zobaczyć szczegóły" raz na jakiś czas nie powinno być tak wielkim problemem? – Groo

Odpowiedz

2

Nie, nie wierzę, że można skonfigurować VS, aby wyświetlać go inaczej. IDE pokazuje pierwszy wiersz komunikatu wyjątku, a w całym tekście wiadomości znajduje się znak nowego wiersza, więc musisz przejść do szczegółów, aby zobaczyć całą treść.

To, co może, jednak nadużywa struktury MSTest do pokazywania własnych wiadomości.

Asercje testu MS są implementowane przez wyrzucanie wyjątków. Wszystkie funkcje MS Test Assert generują wyjątki, które pochodzą z UnitTestAssertException. Visual Studio ma specjalną obsługę dla tego rodzaju wyjątków.

Na przykład: Jeśli piszesz test:

[TestMethod] 
public void AllAboard() 
{ 
    throw new AssertFailedException("Failboat"); 
} 

AssertFailedException jest średnia klasa bazowa dla większości innych niepowodzeń twierdzenia.

Należy zauważyć, że VS2010 ma , a nie wydrukować ogólny komunikat "test wyrzucił wyjątek", zamiast tego po prostu drukuje "Failboat".

Teraz możesz otoczyć testy w rzeczach, które przekształcają normalne wyjątki w AssertFailedException, a następnie możesz drukować dowolne wiadomości.

[TestMethod] 
public void TestStuff() 
{ 
    try 
    { 
     string o = null; // pretend this came from some real code 
     var x = o.Split(new[] { ',' }); // this will throw NullRefException 
    } 
    catch (Exception e) 
    { 
     throw new AssertFailedException(e.Message, e); 
    } 
} 

Oczywiście, nie polecam faktycznie robi to ... to jest gadatliwy, a co ważniejsze, można stracić stos wywołań ... ale hej, teraz masz jedno narzędzie w swojej toolbelt

+0

+1 Dla realnego rozwiązania, ale zgadzam się, że wydaje się, że to przesada – Basic

+0

@ Basic, tak, zupełnie bym tego nie zrobił, ale VS nie daje ci żadnych opcji ... więc jeśli masz ochotę zmienić komunikaty, to co musisz zrobić :-) –

Powiązane problemy