6

Obecnie używam programów Visual Studio 2012 RC i SQL Server 2012 RTM.Jak ponownie wdrożyć, ponownie utworzyć bazę danych w każdym uruchomionym teście

Chciałbym wiedzieć, jak ponownie wdrożyć/ponownie utworzyć testową bazę danych dla każdego uruchomienia testowego.

Należy pamiętać, że mam projekt bazy danych SQL Server dla bazy danych przy użyciu szablonu Visual Studio 2012.

Właściwie nie jestem pewien pomysł mam w głowie, ale .testsettings plik ma instalacji i oczyszczania skrypty. Czy to jest droga? Na przykład skrypt PowerShell odczytujący projekt bazy danych wygenerował skrypt i wykonał go w bazie danych?

Sądzę, że istnieją lepsze sposoby na zrobienie tego i powinno to być gotowe rozwiązanie, ale ignoruję je i Google nie pomaga mi w znalezieniu odpowiedniego rozwiązania.

+0

Czy chcesz wdrożyć i przetestować na serwerze SQL Server lub przeciwko LocalDB? Jeśli przebudowujesz za każdym razem, sugerowałbym testowanie przeciwko LocalDB. Ponadto używasz TFS lub czegoś innego jako agenta kompilacji? Przez "uruchomienie wszystkich testów" rozumiesz ręcznie, wybierając uruchomienie wszystkich testów lub jakąś formę automatyzacji (tj. Po każdej kompilacji, CI, bramkowanym odprawie itp.)? –

+0

@ aclear16 Chcę wdrożyć przeciwko SQL Server. Na razie nie jest on przeznaczony do budowania TFS, służy do ręcznego wykonywania zamówionych testów. –

Odpowiedz

3

Jak już wspomniano, prawdopodobnie będziesz chciał użyć skryptów VS 2012.Local.testsettings> Setup i Cleanup do utworzenia/zerwania bazy danych SQL Server.

enter image description here

za scenariusz może chcesz używać PowerShell z .dacpac (a nie tylko skryptu T-SQL), ponieważ używasz SSDT projektu. Oto link na przykładowy kod - w szczególności możesz rzucić okiem na polecenie "Deploy-Dac".

Jeśli nie jesteś zaznajomiony z .dacpacs jako wyjściem (kompilacją) projektów baz danych utworzonych przez SSDT, przeczytaj ten numer referencyjny link.

+0

Dzięki, spróbuję. Pozwól mi sprawdzić twoje instrukcje :) –

+0

Czy skrypt PowerShell może zostać uruchomiony bezpośrednio jako skrypt instalacyjny i czyszczący? –

+0

Na przykład, co sądzisz o podejściu aclear16 do LocalDB (zobacz jego komentarz w samym pytaniu). –

2

Najszybsze rozwiązanie, choć trochę hackowe, jest naprawdę proste. Możesz ustawić właściwości projektów DB w zakładce debugowania na "zawsze ponownie utworzone DB". Następnie przetestuj za pomocą dwóch kliknięć, wykonaj debugowanie/kompilację, a następnie uruchom wszystkie testy. Powinieneś otrzymać świeżo zbudowany DB na localDB, aby testować przeciwko tobie. Możesz także zmienić cel debugowania DB (ponownie właściwości projektów DB) na cokolwiek chcesz, abyś mógł wdrożyć plik .dacpac lub istniejący SQL DB lub gdziekolwiek. Oznacza to testowanie w dwóch etapach, a jeśli twoja kompilacja jest długa, może to być denerwujące, ale działa. W przeciwnym razie uważam, że wykonywanie skryptów jest jedyną opcją.

2

Edycja: Chociaż to nie odpowiada na pytanie w prosty sposób SQL Server, proste podejście Entity Framework byłoby następujące: Stwierdziłem, że mogę poprawnie tworzyć i niszczyć moją bazę danych za pomocą DbContext.Database Metody .CreateIfNotExists() i DbContext.Database.Delete() w mojej fazie instalacji i czyszczenia moich testów.

+0

Cóż, to wtedy, gdy używasz EF :) –

+0

Moje złe ... whoops. – CokoBWare

+0

Właściwie warto dodać tę informację dla przyszłych użytkowników! +1;) –

Powiązane problemy