Autor: Oskar Klimkiewicz

Inżynier oprogramowania specjalizujący się w C++, absolwent Wydziału Elektroniki i Technik Informacyjnych Politechniki Warszawskiej. Od ponad 8 lat projektuje i rozwija systemy o wysokiej dostępności, głównie dla branży fintech i IoT. PS. Zdjęcie wyretuszowane przez AI :)

Kompleksowa eksploracja Google Mock – cardinality, matchers i actions w praktyce Google Mock (gMock) to kluczowy komponent frameworka GoogleTest, umożliwiający zaawansowane testowanie jednostkowe przy użyciu obiektów pozornych. Artykuł ten stanowi pogłębioną analizę trzech podstawowych koncepcji gMock – cardinality, matchers i actions – prezentując praktyczne wskazówki implementacyjne. Bazując na oficjalnej dokumentacji oraz przykładach z rzeczywistych wdrożeń, analizujemy funkcjonalności każdego z elementów, ich wzajemne zależności oraz niuanse ich zastosowania. 1. Wprowadzenie do podstaw gMock gMock wspiera testowanie oparte na zachowaniu poprzez symulowanie zależności za pomocą obiektów mokowanych. Pozwala to programistom na: Definiowanie oczekiwań (np. liczba wywołań funkcji, wartości argumentów); Określanie zachowań (np.…

Read More

Porównanie wydajności języków C i C++ – wpływ abstrakcji o zerowym narzucie Relacja wydajnościowa między C a C++ to złożony temat, głęboko powiązany z koncepcją abstrakcji o zerowym narzucie – filozofią projektowania zapoczątkowaną przez Bjarne Stroustrupa z myślą o C++. Zasada ta zakłada, że wysokopoziomowe abstrakcje nie powinny generować narzutu czasowego względem równoważnych implementacji niskopoziomowych: „Za to, czego nie używasz, nie płacisz; za to, czego używasz, nie napisałbyś lepiej ręcznie”. C pozostał językiem proceduralnym z minimalnymi możliwościami abstrakcji, podczas gdy C++ obsługuje wiele paradygmatów (obiektowy, generyczny, funkcyjny) i dąży do optymalnej wydajności dzięki optymalizacjom kompilatora. Dane empiryczne pokazują, że: Idiomatyczny…

Read More

Skrajnie niepotrzebne i ekstremalne przypadki w C++ – nawigacja po ciemnych zakamarkach złożonego języka C++ pozostaje jednym z najpotężniejszych i najczęściej używanych języków programowania, szczególnie w obszarach wymagających wysokiej wydajności i kontroli niskopoziomowej. Jego ewolucja z C oraz dekady dodawania nowych funkcji stworzyły środowisko pełne niejednoznacznej składni, nieintuicyjnych zachowań i ekstremalnych przypadków brzegowych. Obejmują one zarówno historyczne artefakty, takie jak urządzenie Duffa, jak i współczesne pułapki związane z niezdefiniowanym zachowaniem czy czasem życia tymczasowych obiektów. Zrozumienie tych przypadków ma praktyczne znaczenie dla bezpieczeństwa, wydajności i utrzymywalności kodu. Na przykład, niezdefiniowane zachowanie może prowadzić do krytycznych luk bezpieczeństwa, gdy kompilatory optymalizują…

Read More

Wyszukiwanie testów w Google Test – metody i narzędzia Google Test (GTest) to zaawansowany framework do testowania jednostkowego w C++, oferujący mechanizmy dynamicznego wykrywania testów. Poniższy artykuł szczegółowo omawia metody i narzędzia wykorzystywane w procesie wyszukiwania testów, analizując zarówno aspekty techniczne, jak i praktyczne implementacje. Metody wykrywania testów Mechanizm gtest_discover_tests w CMake stanowi podstawową metodę wykrywania testów. Funkcja ta konfiguruje polecenie wykonywane po kompilacji (post-build), które uruchamia plik wykonywalny testów z argumentem –gtest_list_tests. To generuje listę testów poprzez analizę wyjścia programu. Przykładowo: gtest_discover_tests( lib_gtest TEST_LIST lib_test_list PROPERTIES ENVIRONMENT „MYCONFIG_PATH=${CMAKE_CURRENT_SOURCE_DIR}” ) Flaga –gtest_list_tests jest kluczowa – wymusza na programie wyświetlenie hierarchicznej…

Read More