Blog (220)
Komentarze (4k)
Recenzje (1)
@djfoxerKonfigurujemy Unit Test w Universal Windows Platform

Konfigurujemy Unit Test w Universal Windows Platform

01.06.2016 01:49

Do każdego projektu w Universal Windows Platform możemy dodać test jednostkowy, niezbędny do dewelopingu nowych rzeczy, czy naprawy błędów.

Taki test zapewne w wielu przypadkach będzie wymagał dodania konfiguracji, aby nie hardcodować na sztywno parametrów niezbędnych do działania (np. danych do logowania). W tym celu można podać potrzebne parametry (klucz -wartość) w pliku, z którego będą zaczytywane niezbędne informacje podczas uruchomienia Unit Testu.

Taki plik jest niezależny od kodu, a zatem nie musi być dorzucany do otwartego repozytorium. Dzięki temu poufne dane, jak np. login i hasło do konta na dobrychprogramach, które pozwalają na testowanie DePeszy, nie będą udostępniane na zewnątrz. Zatem do dzieła!

Plik z parametrami w XML - konfiguracja

Plik z parametrami klucz - wartość jest następującym w formacie XML :


<?xml version="1.0" encoding="utf-8"?>
<RunSettings>

<TestRunParameters>
    <Parameter name="dpTestLogin" value="LOGIN" />
    <Parameter name="dpTestPassword" value="HASŁO" />
</TestRunParameters>
</RunSettings>

Łączymy go z testami w naszej solucji za pomocą menu w Visual Studio w Test->Test Settings i Select Test Settings File. Umieściłem go w projekcie djfoxer.dp.notification.Test jako plik test.runsettings, z wyłączeniem z Gita.

593503

Od tej chwili uruchomiony test będzie wiedział skąd ma pobierać dane konfiguracyjne.

Użycie danych w testach

Teraz w kodzie odwołujemy się do danych w XML za pomocą zmiennej Properties w obiekcie TestContext w klasach testowych (TestClass):



 [TestClass]
    public class UnitTest1
    {
        private static TestContext _testContext;
        private static DpLogic logic = null;

        [ClassInitialize]
        public static void SetupTests(TestContext testContext)
        {
            _testContext = testContext;
            logic = new DpLogic();
        }

        [TestMethod]
        private voidLogin()
        {
            Tuple<bool, DateTime?> success = null;

            Task.Run(async () =>
            {
                success = await logic.SetSessionCookie(
                    _testContext.Properties["dpTestLogin"].ToString(),
                    _testContext.Properties["dpTestPassword"].ToString()
                    );
            }).GetAwaiter().GetResult();

            Assert.AreNotEqual(success.Item1, false);

        }

    }

Elegancko i bez zbędnych poufnych danych w kodzie. Kod łatwy do dowolnej parametryzacji, bez zmian w kodzie, z zachowaniem bezpieczeństwa. Oczywiście pamiętajmy, aby pliki XML z danymi dodać do ignorowanych w konfiguracji repozytorium.

DePesza dostępna jest w markecie Windows 10 (desktop i mobile). Bezpośredni link: DePesza.
Aktualne źródła można znaleźć na GitHub pod adresem: https://github.com/djfoxer/dp.notification
Wybrane dla Ciebie
Komentarze (0)