2012-11-02 21 views
18

Ilekroć próbuję uruchomić dowolny testu z mojego testu pakietu Visual Studio 2012 I dostaćUnit Testing problem w Visual Studio 2012

Test Failed - [Test nazwa metody]

Wiadomość: failed skonfigurować kontekst wykonania, aby uruchomić test

i mój test nie jest nawet rozpoczęty (tj źródłem niepowodzenia testu wskazuje na początku metody badawczej:

tutaj -> TEST_METHOD ([nazwa metody badania]) {

}

Co oznacza ten komunikat znaczy, co może być przyczyną, że pojawiają się i co należy zrobić dla mój test działa poprawnie?

+0

Czy możesz zgłosić to jako błąd na stronie http://connect.microsoft.com/visualstudio? –

Odpowiedz

19

Po kilku dalszych badaniach zdałem sobie sprawę, że przeoczyłem fakt, że zmieniono "Katalog wyjściowy" projektu zawierającego testowane metody (które to było .dll) i nie znajdowałem się w tym samym folderze co moja biblioteka projektów testowych , a więc daje mi komunikat:

wiadomość Nie udało się ustawić kontekstu wykonania, aby uruchomić test

Tak więc problem został rozwiązany, upewniając się, że .dll zawierający metody badany był w tym samym folderze co moja biblioteka projektów testowych, aby w czasie wykonywania mój projekt testowy mógł znaleźć .dll.

+0

To rozwiązanie dotyczy także VS'15u3 (i prawdopodobnie VS'17, ale nie mogę potwierdzić). –

2

Otrzymałem ten błąd, a to dlatego, że korzystałem z debugującej biblioteki DLL i nie posiadałem debugowania C++, w których można je znaleźć. Skopiowałem środowiska uruchomieniowe debugowania C++ do tego samego katalogu i problem został rozwiązany.

0

Ten błąd wystąpił również tylko w konfiguracji Release, ponieważ przypadkowo użyłem biblioteki debugowania jako jednej z zależności bibliotek mojego projektu testowego. (ten sam problem, co w przypadku Bmann'a):

Aby znaleźć bibliotekę, która spowodowała problem, skomentowałem cały kod testu i jego załączniki, dodałem jeden pusty test i usuwano moje pojedyncze libra zależności, aż test zadziałał.

13

Miałem ten sam problem, a wcześniej wspomniane sugestie nie naprawiły go dla mnie. Mój projekt korzysta z bibliotek stron trzecich, a ścieżki do nich są poprawnie skonfigurowane w ustawieniach kompilatora i linkera w moim projekcie VS.

Okazuje się, że silnik testowy VS nie był w stanie znaleźć bibliotek, więc dodałem ścieżki do tych bibliotek do zmiennej środowiskowej PATH. To naprawiło problem dla mnie.

Wskazówka: Spróbuj uruchomić testy jednostki z wiersza poleceń za pomocą VSTest.Console.exe. Komunikaty o błędach pomogły mi w łatwiejszym debugowaniu problemu.

+2

+1 za wskazówkę do uruchomienia VSTest.Console.exe. Dodałem plik .props z kopią post-build, aby wszystkie zależności DLL zostały skopiowane do zdefiniowanego $ (OutDir). Również to pytanie i odpowiedź mają zastosowanie do VS 2015 (to właśnie używam). – hlongmore

+2

Tylko dla rekordu - aby użyć 'VSTest.Console.exe', należy otworzyć' Developer Command Prompt for Visual Studio ... '. Tam można uruchamiać testy jednostkowe, znajdując odpowiednią bibliotekę DLL, a następnie wywołując "VSTest.Console.exe/Platform: x64 UnitTest.xyz.dll". (x86 dla 32bit) – Pascal

+0

Nie będąc tego świadomym, przypadkowo usunąłem plik '.dll' z biblioteki zewnętrznej, którą skopiowałem do folderu binarnego mojego projektu. Uruchomiłem 'VSTest.Console.exe' i to podpowiadało mi, że zaginąłem tego pliku .dll. –

7

Dla tych, którzy szukają innych odpowiedzi, okazało się, że jest to problem ze znalezieniem wszystkich potrzebnych bibliotek DLL. Postępowałem zgodnie z powyższą radą, zwracając zarówno testową bibliotekę DLL, jak i bibliotekę dll do testowania w tej samej lokalizacji, ale nadal mam ten błąd.

Moja testowa biblioteka DLL, poza środowiskiem macierzystym, nie może odnaleźć biblioteki DLL dzieci. Możesz dowiedzieć się, czego brakuje, uruchamiając depends.exe. Dodanie lokalizacji do innych bibliotek DLL na mojej ścieżce rozwiązało problem i wszystko teraz działa.

+0

Dla tych, którzy używają Visual Studio, istnieją pewne zależne biblioteki DLL zlokalizowane w 'Właściwościach konfiguracyjnych'->' Linker'-> 'Ogólne'->' Dodatkowe katalogi bibliotek' –

1

Miałem ten błąd po dołączeniu dll strony trzeciej (OpenCV) w moim projekcie. Dodanie dll do ścieżki lub upuszczenie go w katalogu system32 działa, ale mam lepsze rozwiązanie.

Test jest uruchamiany z katalogu o nazwie AppX. W moim przypadku jest tutaj: ....... OneDrive \ Documents \ Visual Studio \ Projects \ TutorialOcr \ x64 \ Debug \ OcrTesting \ AppX

Po prostu upuściłem tam bibliotekę DLL i test zadziałał!

0

Plik .dll utworzony dla testów jest uruchamiany z folderu, do którego jest zbudowany. W moim przypadku "x64 \ UnitTests \ Tests.dll". Reszta mojej aplikacji jest w "x64 \ Debug \ App.exe" i "x64 \ Release \ App.exe". Moja aplikacja zależy od zewnętrznych bibliotek dll, które znajdują się w folderze głównym projektu, który jest również "katalogiem roboczym" określonym dla uruchamiania debugowania.

Ale program testowy Test Explorer ignoruje to ustawienie i zawsze uruchamia Tests.dll z katalogiem roboczym "x64 \ UnitTests", a następnie nie może znaleźć bibliotek zależnych, na których polegam. Dodanie SetCurrentDirectory("..\\.."); w, powiedzmy, konstruktora klasy testowej nie rozwiązuje problemu, ponieważ biblioteka dll nie może być nawet załadowana do pamięci, jeśli nie zostaną znalezione zależności statyczne.

Rozwiązałem go, ustawiając "Katalog wyjściowy" na "$ (SolutionDir)" dla konfiguracji UnitTests. Powoduje to, że plik Tests.dll zostanie utworzony w folderze głównym.

Powiązane problemy