2013-06-12 9 views
5

Pracuję nad programem, który odczytuje niektóre dane wejściowe ze standardowego wejścia, przetwarza je i zapisuje niektóre wyjścia do standardowego wyjścia. Aby za każdym razem nie musiałem wpisywać danych wejściowych próbka/test, zapisałem dane wejściowe do pliku TXT i odpowiednie oczekiwane wyjście do innego pliku TXT.testowe dane wejściowe/wyjściowe aplikacji konsoli programu Visual Studio 2012

Jak mogę uruchomić mój plik wykonywalny (najlepiej w trybie debugowania lub zwolnienia lub potencjalnie pod profilerem), tak aby VS automatycznie podawał wejściowy plik TXT? Czy VS może automatycznie sprawdzić dane wyjściowe programu względem oczekiwanego wyjściowego pliku TXT? Byłoby wspaniale, gdyby pokazało mi różnicę, jeśli nie są one takie same. Czy mogę skonfigurować platformę testową do uruchamiania różnych testów z różnymi wejściowymi/oczekiwanymi plikami wyjściowymi?

Pamiętaj, że nie mogę po prostu użyć zwykłego testowania jednostkowego, ponieważ muszę wykonać test integracji.

EDYCJA: dla tego, co jest warte, używam C++.

+0

Odpowiedź na to pytanie rozwiązuje część problemu: http://stackoverflow.com/questions/9613059/piping-input-into-a--program-to-debug-in-visual-studio – SirDarius

+0

@SirDarius Thanks. Wygląda na to, że mogę również wyprowadzić dane wyjściowe do pliku. Może mogę powiedzieć systemowi kompilacji, aby porównać oczekiwane.out.txt i actual.out.txt po uruchomieniu programu? Czy można coś takiego zrobić? –

Odpowiedz

1

Jak wspomniano above, możesz przekierować dane wejściowe z jakiegoś pliku.

Podobnie można przekierować wyjście do jakiegoś tymczasowego pliku, a następnie wywołać jakieś narzędzie diff aby porównać swoje pliki:

W „Argumenty komenda” własność kategorii „Debugging” właściwości projektu dodać:

> actual.out.txt && diff actual.out.txt expected.out.txt 

Możesz zastąpić diff dowolnym odpowiednim narzędziem do porównywania.

Zasadniczo można wywołać dowolny skrypt po wykonaniu programu przy użyciu &&.

+0

'Zwykle można wywołać dowolny skrypt po wykonaniu programu przy użyciu &&' Nifty. Czy operator '&&' jest wrażliwy na kod powrotu programu, który prowadzę? Na przykład, jeśli program zakończy działanie z kodem błędu, czy skrypt po "&&" nadal będzie wykonywany? –

Powiązane problemy