2012-01-24 13 views
7

Podczas pracy nad większymi projektami kompilacja i uruchomienie frameworka testów jednostkowych może potrwać co najmniej 10 sekund. Czy istnieją skuteczne sposoby na zmniejszenie czasu pętli sprzężenia zwrotnego? Zamierzam wprowadzić niewielkie zmiany w jednej klasie testowej i jednej innej pomiędzy kolejnymi testami.W języku C#, jaki jest dobry sposób na poprawę pętli sprzężenia zwrotnego testu jednostkowego?

Rozważałem kilka innych podejść. Nie widzę sposobu, aby skompilować i uruchomić pojedynczą klasę testową i zależności. Mogłabym zwiększyć liczbę projektów w rozwiązaniu, aby każdy montaż zajmował mniej czasu, ale to powoduje inne problemy. Wydaje się, że NCrunch zmniejsza potrzebę ręcznego uruchamiania testów, ale nadal kompiluje pełne złożenia.

Wyjaśnienie: 10 sekund czasu na kompilację klasy testowej jednostki i testowanej klasy. Mój problem z programem NCrunch mógł być spowodowany mniej wydajnym komputerem.

Odpowiedz

7

Trzeba będzie umieścić każdą klasę testową w osobnym zestawie - zespół jest faktycznie jednostką kompilacji. Jeśli potrzeba 10 sekund na ponowną kompilację po po prostu zmiany w klasie testowej, to sugeruje, że albo masz zbyt wiele testów w jednym zespole, albo masz bardzo wolną maszynę. Możliwe, że uzyskanie lepszej maszyny (lub ulepszenie istniejącej z większą pamięcią lub dyskiem SSD) jest najlepszym rozwiązaniem.

Używam samego programu NCrunch i mimo że wciąż kompiluje pełne złożenia, to fakt, że robi to w tle, oznacza, że ​​do czasu, kiedy odetchnęłam mentalnie, testy zostały przebudowane i działają. Program NCrunch działa dobrze, jeśli masz przy sobie wiele procesorów i ramdysk - możesz określić, gdzie jest budowany, a także ile procesorów może użyć.

Jeśli tylko uważane NCrunch (lub The Mighty Moose etc - podobne rzeczy), ale w rzeczywistości nie próbował go, należy nadać mu iść przed zakładając, że nie będzie wystarczająco szybka.

+0

Nie było jasne w jednym punkcie. 10 sekund było po zmianie w klasie testowanej. Próbowałem NCrunch, ale myślę, że mój komputer brakowało mocy. – BenMaddox

+0

Używam NCrunch i działa płynnie. To prawda, mam ostatnio komputer i dysk SSD. –

+0

@BenMaddox: Jaka jest twoja maszyna i jak realistyczna byłaby jej poprawa? –

2

Możesz sprawdzić AutoTest.Net, który jest dodatkiem do programu Visual Studio, który uruchamia testy urządzenia w tle podczas pisania kodu.

W ten sposób możesz potraktować swoje testy jednostkowe bardziej jak błędy/ostrzeżenia kompilatora i uzyskać względną informację zwrotną w czasie rzeczywistym.

0

Deklaratywne testy jednostkowe skutecznie wyzerowałyby czas kompilacji, ale tylko jeśli pozwala na to Twoja architektura. Na przykład przeniesienie testów jednostkowych do bazy danych działało dobrze dla nas w projekcie na dużą skalę.

+0

Nadal będę wprowadzać zmiany w testowanej klasie. Nigdy nie rozważałem przeniesienia testów jednostkowych do bazy danych. – BenMaddox

+0

Tak, nastąpiłaby poprawa po dodaniu nowych testów. – henginy

Powiązane problemy