2012-09-28 15 views
7

Piszę aplikację Windows 8 i piszę testy jednostkowe dla niej. Jak mogę je uruchomić w sposób zautomatyzowany w środowisku Windows 8?Jak zautomatyzować testy jednostkowe dla aplikacji HTML5 systemu Windows 8?

Jeśli piszę bardzo proste pliki JavaScript, bez zależności w środowisku Windows 8 lub DOM, mogę je przetestować z wiersza poleceń za pomocą Node.js. Jest to bardzo szybkie (mniej niż sekunda).

Jeśli potrzebuję zaangażować DOM, a moje użycie DOM pozostanie niezbyt nowe, mogę użyć jsdom w Node.js i uzyskać tę samą konfigurację i tę samą prędkość.

Ale jsdom jest niekompletny, a często chcę używać podstawowych funkcji systemu Windows 8, takich jak biblioteka bazowa WinJS (na przykład WinJS.Promise) lub wyliczenia Windows.*. Idealnie powinienem testować w tym samym silniku JS i środowisku DOM, ponieważ moja aplikacja faktycznie będzie działać.

Idealnie potrzebuję testera: lekki kontener HTML5 Windows 8, który może uruchomić testy jednostkowe z prawdziwym DOM oraz dostęp do interfejsów API WinJS i Windows Runtime. Do integracji z procesem kompilacji potrzebuję również możliwości zgłaszania wyników z powrotem do wiersza poleceń (stdout, stderr) i zmiany kodu powrotnego testu biegacza w zależności od sukcesu lub niepowodzenia. Powinien być całkowicie zautomatyzowany, możliwy do uruchomienia w tle i bardzo szybki (mniej niż 10 sekund).

Wiem, że są takie narzędzia dla WebKit, np. PhantomJS. Czy coś takiego istnieje w środowisku środowiska wykonawczego Windows HTML5? Jeśli nie, to jakie API powinienem zaglądać do budowy czegoś podobnego?

Odpowiedz

10

Obecnie nie ma sposobu na uruchomienie zestawu testów Win8/WinJS bez głowy. Środowisko uruchomieniowe wymagane dla aplikacji WinJS nie może zostać zainstalowane samodzielnie, bez uruchamiania pełnej aplikacji WinJS.

Najlepszym sposobem na uruchomienie testów, IME, jest utworzenie osobnego projektu WinJS w swoim rozwiązaniu, aby przeprowadzić testy.

Christopher Bennage ma blogu, który opisuje podstawowe skonfigurowaniu tutaj: http://dev.bennage.com/blog/2012/08/15/unit-testing-winjs/

i mam kilku blogach, że głowa trochę dalej na ścieżce:

http://lostechies.com/derickbailey/category/winjs/

http://lostechies.com/derickbailey/2012/08/17/asynchronous-unit-tests-with-mocha-promises-and-winjs/

http://lostechies.com/derickbailey/2012/08/21/a-winjs-specrunner-automating-script-tag-insertion-for-unit-tests/

Jeśli nie podoba mi się pomysł uruchomienia osobnego projektu do testów lub jeśli chcesz QUnit zamiast Jasmine lub Mocha, sprawdź QUnit-Metro: http://qunitmetro.github.com/QUnitMetro/ - działa on w projekcie z twoją prawdziwą aplikacją i daje ci menu kontekstowe w trybie programowania, aby uruchomić testy dla strony, na której jesteś.

Nie jestem fanem QUnit ani sposobu, w jaki QUnit-Metro działa na stronie. Ale możesz uznać to za odpowiednie, jeśli nie lubisz osobnego projektu.

Nadzieję, że pomaga.

Powiązane problemy