Wszystko, co musisz wiedzieć o testowaniu w C++ w jednym kursie
#include "external/catch.hpp"
#include "external/hippomocks.h"
#include "Controller.hpp"
#include "Thermometer.hpp"
#include "Fan.hpp"
constexpr double TARGET_TEMP = 100.0;
constexpr double TOLERANCE = 10.0;
struct StubThermometer : Thermometer {
double temperature = TARGET_TEMP;
double getTemperature() const override {
return temperature;
}
};
MockRepository mocks;
SCENARIO("Controller's behavior", "[Controller]") {
GIVEN("A Controller with a StubThermometer and a MockFan") {
Fan *fanMock = mocks.Mock();
StubThermometer st;
Controller c{st, *fanMock, TARGET_TEMP, TOLERANCE, nullptr};
WHEN("Temperature is target temperature") {
st.temperature = TARGET_TEMP;
THEN("Fan speed is 1000 rpm") {
mocks.ExpectCall(fanMock, Fan::setSpeed).With(1000);
c.updateRpm();
}
}
WHEN("Temperature is below target - tolerance") {
st.temperature = TARGET_TEMP - TOLERANCE - 0.01;
THEN("Fan should be stopped") {
mocks.ExpectCall(fanMock, Fan::setSpeed).With(0);
c.updateRpm();
}
}
WHEN("Temperature is above target + tolerance + 2") {
st.temperature = TARGET_TEMP + TOLERANCE + 42;
THEN("Fan speed is 3000 rpm") {
mocks.ExpectCall(fanMock, Fan::setSpeed).With(3000);
c.updateRpm();
}
}
}
}
#include "gmock/gmock.h"
#include "foo.h"
class MockFoo : public Foo {
MOCK_METHOD(int, GetSize, (), (const, override));
MOCK_METHOD(string, Describe, (const char* name), (override));
MOCK_METHOD(string, Describe, (int type), (override));
MOCK_METHOD(bool, Process, (Bar elem, int count), (override));
};
TEST(BoardTest, PieceCanBeMovedOnBoard) {
// GIVEN
Board board;
Piece* piece = new Pawn();
board.setPiece(0, 0, piece);
// WHEN
board.makeMove(0, 0, 1, 0);
// THEN
EXPECT_EQ(board.getPiece(1, 0), piece);
EXPECT_EQ(board.getPiece(0, 0), nullptr);
delete piece;
}
To narzędzie sprawi, że Twoje testy w C++ będą śmigać jak piłeczka tenisowa po korcie, a Ty zostaniesz mistrzem łapania błędów w kodzie. Będziesz pisać testy w stylu BDD, sprawdzać asercje, korzystać z tagów i generować różnorodne testowe scenariusze.
Poznasz najpopularniejszy framework do pisania i wykonywania testów w C++. Dowiesz się jak organizować w nim testy, na czym polega różnica między TEST, TEST_F, TEST_P oraz kiedy z nich korzystać.
Zobaczysz, jak wykorzystać zwinne metody testowania w praktyce przy tworzeniu prawdziwego projektu. Przy okazji zobaczysz, jak stworzyć taki projekt od zera.
Odkryjesz tajniki konfiguracji GTest, poznasz potęgę ctest i stworzysz testy w C++, które spełnią Twoje potrzeby - od pojedynczych testów funkcji aż po parametryzowane testy.
Nauczysz się, jak sprawnie zarządzać zależnościami w swoim kodzie, dzięki czemu testowanie stanie się łatwiejsze niż kiedykolwiek wcześniej.
Zrozumiesz potęgę różnych rodzajów atrap, takich jak dummy, stub, fake, mock i spy, które pomogą Ci kontrolować zachowanie zależności podczas testowania. Zbudujesz solidne fundamenty swoich testów w C++, dzięki którym zdobędziesz pewność, że Twój kod działa tak, jak powinien!
Krótkie kilkuminutowe lekcje pozwolą Ci skubnąć trochę wiedzy nawet gdy siedzisz na toalecie ze smartfonem 😄
W celu sprawdzenia i utrwalenia zdobytej wiedzy 🤯
Dzięki nim w praktyce przećwiczysz poznaną teorię 💻
Błyskawicznie dowiesz się, czy Twoje rozwiązania przechodzą nasze testy. Zawsze też możesz porozmawiać o nich na czacie
Nie ograniczamy się do samego C++. Dowiesz się jak kompilować kod, używać GitHuba lub gita 🛠. No i tym przypadku dokładnie przemaglujemy cmake, ctest, Test i Catch2.
Na Discordzie porozmawiasz z innymi kursantami. Możesz wymieniać się doświadczeniem oraz rozwiązaniami zadań. Pytaj o wszystko co związane z C++
Na bieżąco czuwamy nad materiałami. Jeśli coś się zmieni lub nagramy nowe wideo to dostaniesz je gratis
Możesz powrócić do szkolenia nawet za kilka lat
W ciągu 14 dni możesz zwrócić kurs z dowolnego powodu, np. aberracji stratosferycznych nad biegunem południowym 😉 Możesz też nie podawać powodu w ogóle
Moduł
Ilość lekcji wideo
Czas trwania materiałów
[H:MM:SS]
Catch2
14
1:22:58
GTest
4
0:22:26
Zastosowanie GTest
7
0:59:12
Wstrzykiwanie zależności
9
0:38:15
Atrapy
5
0:18:21
GMock
9
0:59:55
TDD
11
3:10:47
W sumie
59
7:51:54
Kurs podzielony jest na działy, które w trybie standardowym są odblokowywane tydzień po tygodniu. Oznacza to, że nie masz dostępu do całości materiałów od razu. Dzięki temu możesz na spokojnie przerobić i utrwalić materiał z poprzednich działów, zanim zabierzesz się za następny.
Interesuje mnie skuteczne nauczanie, w którym masz przerobić kurs i dużo zapamiętać, a nie tylko go kupić, jak jest w przypadku 80% kursów na Udemy (według ich statystyk). Nie ma się on kurzyć na Twojej elektronicznej półce. Programowania nie uczy się oglądając wideo, tylko programując. Wprowadzenie takiej blokady na treści powoduje, że ludzie w końcu przerabiają zadania, (które zresztą są sprawdzane przez automaty), a nie tylko oglądają samo wideo, z którego po miesiącu nic nie pamiętają. Wiedza lepiej się utrwala, gdy wracasz do tematu wielokrotnie, a nie przeglądasz wszystko na raz.
Interesuje Cię dostęp natychmiastowy? Możesz go wykupić, dopłacając kwotę 129 złotych. W tym celu, skontaktuj się z nami poprzez formularz, lub napisz maila na: hello@coders.school. Pamiętaj, że wybierając tę opcję, zrzekasz się możliwości zwrotu.
Jestem założycielem Coders School.
Specjalizuję się w C++ oraz Pythonie. W wieku 15 lat zaczynałem od technologii webowych, takich jak PHP, CSS, JavaScript, a jeśli liczyć HTMLa, to "programowałem strony internetowe" już w 4 klasie podstawówki 🙂
Przygodę z C++ zacząłem w 2006 roku, ale dopiero od 2012 zacząłem używać go komercyjnie.
Od 2014 roku prowadzę szkolenia z programowania. Byłem trenerem Nokia Academy. Występowałem na konferencji programistycznej code::dive oraz Data Science Summit. Prowadziłem kursy programowania na uczelniach i wygłaszałem prelekcje na Meetupach, Wrocławskiej grupie C++ oraz Akademickich Mistrzostwach Polski w Programowaniu Zespołowym.
Pod koniec 2017 roku postanowiłem szkolić na własną rękę i założyłem szkołę Coders School. Moje kursy C++ są nastawione na jak najprostsze przekazywanie wiedzy oraz sprawianie, aby ta wiedza na długo zostawała w pamięci.
Interesuję się andragogiką, sztuczną inteligencją, fotografią i łucznictwem, a ostatnio także marketingiem. Jestem fanem StarCrafta.
Pochodzą one tylko i wyłącznie od naszych kursantów. Więcej opinii znajdziesz tutaj
Opinie są pozyskiwane i weryfikowane zgodnie z zapisem w punkcie 15 regulaminu.
Przerób co najmniej 20% zagadnień z danego kursu i otrzymaj potwierdzenie uczestnictwa
Wespnij się na sam szczyt! Ukończ minimum 80% zagadnień i zdobądź certyfikat.
* Na chwilę obecną certyfikaty wystawiamy tylko w przypadku pakietów
napisz do nas na:
Poleć nas znajomym i zgarnij dodatkowy hajs! 💸
To kurs self-paced, który startuje od razu, gdy go zakupisz.
To zależy 😉
Standardowo kolejne moduły kursu są udostępniane z tygodnia na tydzień. Ma to pewien cel edukacyjny. Nie chcę, aby już na dzień dobry zasypał Cię nadmiar wiedzy. No i rozłożenie wiedzy na mniejsze fragmenty, ale bardziej rozciągnięte w czasie, powoduje lepsze zapamiętywanie materiału. Jeśli po pewnym czasie musisz do czegoś wrócić, to przypominasz sobie wcześniej zdobytą wiedzę. Dzięki temu lepiej się ona utrwala.
Jednak dużo osób pytało mnie o dostęp natychmiastowy, dlatego zdecydowałem się wprowadzić taką opcję za dopłatą 129 złotych. Mimo to rekomenduję standardowy dostęp, ale oczywiście wybór należy do Ciebie 🙂
Pytania możesz zadawać w komentarzach pod lekcjami lub na naszym Discordzie. Nic nie pozostaje tam bez odpowiedzi 🙂
Oczywiście, dostaniesz fakturę. Jeśli nie dotrze ona do Ciebie w ciągu 1 dnia, to pisz do nas maila na hello@coders.school. Jeśli robisz tradycyjny przelew, to płatność może być zaksięgowana dopiero następnego dnia lub po weekendzie.
Podana cena jest ceną brutto i zawiera podatek VAT 23%.
Oznacza to, że dopóki istnieje nasza platforma i wszystkie jej składowe (WebToLearn, GitHub, Discord, YouTube, Vimeo) to możesz ich swobodnie używać. Gdyby cokolwiek przestało istnieć, to zapewnimy Ci link do ściągnięcia sobie materiałów na dysk.
To jest bardzo indywidualna kwestia. Bardziej to zależy od konkretnego rekrutera niż polityki firmy. Znałem takich, którzy w ogóle nie zaglądali na GH. Tłumaczyli, że i tak muszą przetestować kompetencje podczas rozmowy. Znałem też takich, którzy bez GH nawet nie rozpatrywali kandydata, bo Ci, co mieli projekty, to już prezentowali swoje próbki kodu i rekruterzy po samych tych próbkach wiedzieli, czego się spodziewać. Na ich podstawie dokonywali selekcji kandydatów, a nie patrzyli na CV.
Z moich (i nie tylko) obserwacji wynika, że świetnie udokumentowany projekt na GitHubie (w pliku README.md z grafikami, animacjami, wideo) niesamowicie przyciąga rekruterów i wyróżnia kandydatów.
Zgadujecie się na Discordzie i robicie wspólnie zadania. Możecie pisać bezpośrednio do siebie lub porozmawiać przez czat głosowy. Jest też możliwość współdzielenia ekranu. Później podczas zgłaszania zadania w opisie musicie umieścić wasze @username z GitHuba, aby nasz automat poprawnie zaliczył zadania 🙂
Na razie nie mamy takiej opcji.
Wiek naprawdę nie ma znaczenia dla pracodawców. Dla nich liczą się tylko kompetencje, czyli to, czy zatrudnienie Ciebie przyniesie firmie zysk. Dla Ciebie na pewno ma. W swojej obecnej ścieżce kariery masz już zapewne dość ugruntowaną pozycję i wiesz, jak wyglądają kwestie awansów. Jeśli zmienisz ścieżkę na IT, to pewnie będzie to dla Ciebie zaprzeczenie tego, co robiłeś przez ostatnie 10 lat lub więcej. Ale spokojnie, nawet jeśli sobie postanowisz, że się przebranżawiasz, to chyba nic nie stoi na przeszkodzie, żebyś wrócił do swojej pierwotnej branży, gdyby coś poszło nie tak, albo gdyby okazało się, że IT nie wygląda tak, jak Ci się wydawało. Także większość takich przekonań siedzi w głowie.
Na pewno przebranżowienie się będzie wymagało od Ciebie wysiłku. Na to potrzeba czasu. Musisz uczyć się minimum pół roku, aby osiągnąć jakiś konkretny poziom, z którego już możesz się rekrutować na juniora. I to takie pół roku, gdzie po godzinach, średnio przez 2-3 godziny dziennie programujesz. Więc jeśli już czujesz się staro i nie chce Ci się uczyć, to nie jest opcja dla Ciebie. Ale im starszy będziesz, to pewnie jeszcze mniej Ci się będzie chciało 😉
Przeczytaj jeszcze artykuł Programowanie w C++ po 30-ce. Jak zacząć programować?
Tak naprawdę istnieje tylko jeden sposób — kup go. Będziesz mieć 14 dni, aby sprawdzić, czy ten kurs jest dla Ciebie odpowiedni. Jeśli okaże się, że nie, to możesz go zwrócić i pomyśleć o czymś łatwiejszym/trudniejszym.
Oprócz tego przy poszczególnych kursach znajdziesz informacje o ich stopniu trudności, co pomoże Ci w doborze kursu do poziomu wiedzy.
Grywalizacja jest niesamowita i wiem, co daje, ale z racji problemów technicznych musieliśmy na razie z niej zrezygnować. Planujemy w przyszłości popracować nad jej włączeniem.
Nie. Wiem, że papierki dodatkowo motywują ludzi, ale taki certyfikat co najwyżej ozdobi Ci ścianę w pokoju (jeśli go wydrukujesz). Nie będzie on miał znaczenia podczas rekrutacji. I tak musisz wykazać się wiedzą. W IT papierki nie są aż tak ważne. Pomimo ich posiadania pracodawcy i tak zweryfikują Twoją wiedzę.
Brak certyfikatu to nic. Wpisz sobie ten kurs w swoje CV w dziale Edukacja i dodaj go na LinkedInie. To wystarczy.
Ale za przerobienie wszystkich naszych kursów jak najbardziej dostaniesz certyfikat. To już nie będzie byle co. Napisz wtedy maila na hello@coders.school.
Jeśli nie chcesz kupować kursu, ale chcesz rozwijać swoją wiedzę o C++, to zapisz się na nasz Ninjaletter. Co miesiąc wysyłamy dawkę wartościowych treści o C++: nowości, ciekawostki, zadania rekrutacyjne i darmowe materiały. Oprócz tego ninjaletterowicze zawsze mogą liczyć na specjalne promocje i spoliery o nowych kursach.
Chcesz wiedzieć, co słychać w C++ nie tylko? Zapisz się na Ninjaletter i otrzymuj od nas co miesiąc dawkę wartościowych treści o C++
Zanim to zrobisz, zapisz się na Ninjaletter, aby wiedzieć, co piszczy w C++.
Informujemy, iż w celu realizacji usług dostępnych w naszym serwisie, optymalizacji jej treści, dostosowania strony do Państwa indywidualnych potrzeb oraz wyświetlania, personalizacji i mierzenia skuteczności reklam w ramach zewnętrznych sieci reklamowych korzystamy z informacji zapisanych za pomocą plików cookies na urządzeniach końcowych użytkowników. Pliki cookies można kontrolować za pomocą ustawień swojej przeglądarki internetowej. Dalsze korzystanie z naszego serwisu, bez zmiany ustawień przeglądarki internetowej oznacza, iż użytkownik akceptuje stosowanie plików cookies. Więcej informacji zawartych jest w polityce prywatności serwisu.