2016-01-05 21 views
11

Cieszę się z nowego narzędzia Build w Visual Studio Online. Pozwala mi robić prawie wszystko, co robię na moim lokalnym serwerze kompilacji. Ale jedna rzecz, której mi brakuje to testy integracyjnej bazy danych: dla każdego uruchomienia kompilacji ponownie tworzę testową bazę danych ze skryptów i przeprowadzam testy baz danych na jej bazie.Testy integracji bazy danych w Visual Studio Online

W Visual Studio Online nie mogę znaleźć żadnej instancji bazy danych dostępnej dla moich potrzeb.

Próbowałem utworzyć bazę danych Azure SQL (za pomocą PowerShell) dla każdego uruchomienia kompilacji, a następnie usunąć go po zakończeniu kompilacji. Jednak utworzenie bazy danych trwa wiecznie (w porównaniu z resztą procesu kompilacji). Nawet jeśli skrypty PowerShell są gotowe, baza danych nie jest jeszcze gotowa do akceptowania żądań - muszę ciągle sprawdzać, czy jest rzeczywiście gotowa. Tak więc ten scenariusz staje się zbyt skomplikowany i nie jest wiarygodny.

Czy są inne opcje przeprowadzania testów integracji bazy danych (SQL Server) w Visual Studio Online?

Aktualizacja: myślę, że nie jestem bardzo jasne, z czego potrzebuję - Muszę wolny (bardzo tani) instancji SQL Server do łączenia się, że działa na środek budować w VSO. Coś w rodzaju SQL Express lub SQL CE lub LocalDB, gdzie mogę się połączyć i ponownie utworzyć bazę danych, aby uruchomić testy C#. Ponowne tworzenie bazy danych lub uruchamianie testów nie stanowi problemu, ponieważ poprawny ciąg połączenia jest problemem.

Aktualizacja październik 2016:I've blogged o tym, jak zrobić testy integracyjne w VSTS

+0

nie związane z Visual Studio, ale: czy próbowałeś migawek? Utwórz bazę danych 1 raz, utwórz migawkę przed testami, a następnie przy każdej kompilacji uruchom 'RESTORE DATABASE [dbname] FROM DATABASE_SNAPSHOT' – Ingaz

+0

@Ingaz Aby wykonać migawkę, potrzebuję bazy danych do uruchomienia na czymś - serwerze. Tego właśnie szukam - serwer dB na instancji kompilacji – trailmax

Odpowiedz

18

Serwery budujące TFS są dostarczane z preinstalowanym serwerem MSSQL Server 2012 i MSSQL Server 2014 LocalDB.

Źródło:TFS Service - Software on the hosted build server

Więc wystarczy umieścić następującą jedną wkładkę do post-build zdarzenia rozwiązanie do tworzenia MYTESTDB instancji LocalDB do swoich potrzeb. Pozwoli ci to połączyć się z (LocalDB)\MYTESTDB i uruchomić testy integracji bazy danych po prostu dobrze.

"C:\Program Files\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe" create "MYTESTDB" 12.0 -s 

Źródło:SqlLocalDB Utility

+0

Teraz rozmawiamy !! Dzięki za to - właśnie tego szukałem. Spróbuję przez weekend i zaakceptuję twoją odpowiedź, jeśli wszystko się ułoży. – trailmax

+0

Widziałem tę listę zainstalowanego oprogramowania, ale nie byłem pewien, jak uzyskać dostęp do SQL Server. Czy istnieje gdzieś dokumentacja? Czytałem połączonego bloga, ale nie było to specyficzne dla VSO i dalszych szczegółów. – trailmax

+1

O ile mi wiadomo, nie ma takiej dokumentacji, trzeba użyć dokumentacji konkretnego oprogramowania. "SqlLocalDB create" to sposób pracy z LocalDB. –

1

istnieje „Redgate SQL CI” rozszerzenie dla VSTS na giełdzie może chcesz spróbować. Zobacz ten link do szczegółów:

w ramach rozszerzenia, istnieją cztery działania dostępne:

• Build - buduje swoją bazę w pakiet Nuget z bazy folderze skrypty w kontroli źródła

• Test - prowadzi swoje badania tSQLt przeciwko bazie

• Sync - synchronizacja pakiet do bazy danych integracji

• Opublikuj - publikuje pakiet do strumienia NuGet

+0

Dziękuję za odpowiedź, Eddie. Ale nie jest to dokładnie to, czego potrzebuję. Potrzebuję bazy danych, aby uruchomić testy. Mam cały kod/infrastrukturę do uruchomienia testów. – trailmax

0

Powinieneś popchnąć testy integracyjne (wszystko, co potrzebuje instancji aplikacji) do uruchomienia w środowisku jako część potoku wydania.

W swojej kompilacji wystarczy wykonać testy kompilacyjne i jednostkowe. Jeśli to konkuruje, powinieneś wyzwolić wydanie i jako część potoku wydania, twoim pierwszym krokiem powinno być wdrożenie bazy danych na lazurowym serwerze.

Zamiast próbować korzystać z SQL Azure, można utworzyć maszynę wirtualną na lazurach, które już istnieją, z zainstalowanym serwerem SQL. Użyj zdalnej obsługi skryptów do wdrożenia bazy danych i przeprowadzenia testów.

Nawet jeśli nie korzystasz z narzędzi do zwolnienia, możesz to zrobić.

+0

Przykro mi, to nie jest pytanie A-B. Testy DB są częścią mojego wydania, a posiadanie VM nie czyni go tańszym ani szybszym do wykonania. Zaczynałem od maszyny wirtualnej z programem SQL Server, a następnie przestawiłem się na SQL Azure i oba te scenariusze nie działają dla tego projektu. – trailmax