{"id":594,"date":"2023-11-08T11:23:25","date_gmt":"2023-11-08T10:23:25","guid":{"rendered":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/?p=594"},"modified":"2024-01-16T11:40:14","modified_gmt":"2024-01-16T10:40:14","slug":"test-driven-development","status":"publish","type":"post","link":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/?p=594","title":{"rendered":"Test-Driven Development"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"594\" class=\"elementor elementor-594\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-538fd38 elementor-section-full_width elementor-section-stretched elementor-section-height-default elementor-section-height-default\" data-id=\"538fd38\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9b8e1ee\" data-id=\"9b8e1ee\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3e984b3 elementor-widget__width-initial elementor-widget elementor-widget-qi_addons_for_elementor_section_title\" data-id=\"3e984b3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"qi_addons_for_elementor_section_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"qodef-shortcode qodef-m  qodef-qi-section-title  qodef-decoration--italic  qodef-link--underline-draw qodef-subtitle-icon--left\">\n\t\t\t\t\t\t<h2 class=\"qodef-m-title\">\n\t\tTest Driven-Development\t<\/h2>\n\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0a6a65b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0a6a65b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d916961\" data-id=\"d916961\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-db0cc78 elementor-widget elementor-widget-heading\" data-id=\"db0cc78\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Co to jest?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d308973 elementor-widget elementor-widget-text-editor\" data-id=\"d308973\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Jest to technika pisania oprogramowania, w kt\u00f3rej g\u0142\u00f3wn\u0105 ide\u0105 jest pisanie testu unitowego do funkcjonalno\u015bci, kt\u00f3ra jeszcze nie istnieje, a dopiero potem napisanie kodu implementuj\u0105cego t\u0105 funkcjonalno\u015b\u0107.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e0070c1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e0070c1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2127469\" data-id=\"2127469\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2199bc3 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"2199bc3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Spis tre\u015bci<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3724922 elementor-widget elementor-widget-text-editor\" data-id=\"3724922\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ol><li><a href=\"#whytesting\">Dlaczego testujemy kod?<\/a><\/li><li><a href=\"#rules\">Regu\u0142y<\/a><\/li><li><a href=\"#unittests\">Testy unitowe &#8211; cechy dobrych test\u00f3w<\/a><\/li><li><a href=\"#nousing\">Kiedy NIE u\u017cywamy?<\/a><\/li><li><a href=\"#defects\">Wady TDD<\/a><\/li><li><a href=\"#example\">Przyk\u0142ad<\/a><\/li><li><a href=\"#summary\">Podsumowanie<\/a><\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-15efec9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"15efec9\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d73da66\" data-id=\"d73da66\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8268793 elementor-widget elementor-widget-heading\" data-id=\"8268793\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"whytesting\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Dlaczego testujemy kod?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e0fa569 elementor-widget elementor-widget-text-editor\" data-id=\"e0fa569\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>Dzi\u0119ki testom kod staje si\u0119 \u0142atwiejszy do zrozumienia<\/li><li>\u0141atwiej jest wprowadza\u0107 zmiany w kodzie<\/li><li>Mo\u017cna w\u0142\u0105cza\u0107 testy automatyczne<\/li><li>Sprawia, \u017ce odnajdujemy b\u0142\u0119dy w momencie pisania danej funkcjonalno\u015bci. Odnajdywanie b\u0142\u0119d\u00f3w p\u00f3\u017aniej jest bardzo trudne, a im p\u00f3\u017aniej, tym jest gorzej<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9f9a522 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9f9a522\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2407f46\" data-id=\"2407f46\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d6a2a48 elementor-widget elementor-widget-heading\" data-id=\"d6a2a48\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"rules\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Regu\u0142y<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-62da5ca elementor-widget elementor-widget-text-editor\" data-id=\"62da5ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ol><li>Faza RED &#8211; &#8222;Nie mo\u017cesz napisa\u0107 \u017cadnego produkcyjnego kodu, dop\u00f3ki nie b\u0119dziesz mia\u0142 nie przechodz\u0105cego testu.&#8221;<ul><li>Najpierw trzeba wymy\u015bli\u0107 jak\u0105 chcemy doda\u0107 funkcjonalno\u015b\u0107<\/li><li>Piszemy tylko ma\u0142e testy w plikach testowych i badamy ma\u0142y kawa\u0142ek funkcjonalno\u015bci<\/li><li>Upewniamy si\u0119, \u017ce test nie przechodzi<\/li><\/ul><\/li><li>Faza GREEN &#8211; &#8222;Nie mo\u017cesz napisa\u0107wi\u0119cej testu, je\u017celi ten test nie przechodzi. B\u0142\u0105d kompilacji jest nie dzia\u0142aj\u0105cym testem.&#8221;<ul><li>Piszemy tylko w kodzie produkcyjnym<\/li><li>Naszym celem jest, \u017ceby wszystkie testy przechodzi\u0142y i by\u0142y zielone<\/li><li>Kod ma by\u0107 funkcjonalny, a nie &#8222;pi\u0119kny&#8221;<\/li><li>Testy puszczamy tak szybko jak to tylko mo\u017cliwe<\/li><\/ul><\/li><li>Faza REFACTOR &#8211; &#8222;Nie mo\u017cesz napisa\u0107 wi\u0119cej kodu produkcyjnego ni\u017c ten wymagany do przej\u015bcia obecnego testu.&#8221;<ul><li>Refaktorujemy kod<\/li><li>Nie dodajemy nowych funkcjonalno\u015bci<\/li><li>Nie mo\u017cemy tym popsu\u0107 test\u00f3w, musz\u0105 przechodzi\u0107<\/li><\/ul><\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e330a47 elementor-widget elementor-widget-text-editor\" data-id=\"e330a47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Inaczej mo\u017cna to przeza\u0107 za pomoc\u0105 schematu Red Green Refactor<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2edcc53 elementor-widget elementor-widget-image\" data-id=\"2edcc53\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"700\" height=\"400\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/TDD.webp\" class=\"attachment-large size-large wp-image-596\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/TDD.webp 700w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/10\/TDD-300x171.webp 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-502c502 elementor-widget elementor-widget-heading\" data-id=\"502c502\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Wnioski z schematu?<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea82625 elementor-widget elementor-widget-text-editor\" data-id=\"ea82625\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>Nale\u017cy po\u015bwi\u0119ci\u0107 tyle samo czasu na ka\u017cdy z tych etap\u00f3w<\/li><li>Zawsze powinni\u015bmy zrobi\u0107 refaktor, nie mo\u017cna go pomija\u0107<\/li><li>Oddzielamy rozwi\u0105zywanie problemu od tworzenia architektury kodu<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-40c694b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"40c694b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-29f2280\" data-id=\"29f2280\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1c44ec7 elementor-widget elementor-widget-heading\" data-id=\"1c44ec7\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"unittests\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Testy unitowe - cechy dobrych test\u00f3w<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28c6e47 elementor-widget elementor-widget-text-editor\" data-id=\"28c6e47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>Testuj\u0105 jedn\u0105 funkcjonalno\u015b\u0107 &#8211; oboj\u0119tnie, czy to metoda, klasa, czy paczka<\/li><li>Powinny dzia\u0142a\u0107 w izolacji &#8211; test powinien przechodzi\u0107 lub nie przechodzi\u0107 niezale\u017cnie od innych test\u00f3w<\/li><li>S\u0105 powtarzalne<\/li><li>Nazwa testu m\u00f3wi nam co on robi<\/li><li>Testuj\u0105 zachowanie, ale nie detale implementacyjne<\/li><li>Powinny by\u0107 napisane tak, \u017ceby tylko na ich podstawie da\u0142o si\u0119 odbudowa\u0107 ca\u0142y system<\/li><li>Nie pokazuj\u0105 bug\u00f3w w kodzie<\/li><li>Nie testuj\u0105 metod prywatnych bezpo\u015brednio<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8839ec4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8839ec4\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d10bc92\" data-id=\"d10bc92\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-121c14e elementor-widget elementor-widget-heading\" data-id=\"121c14e\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"nousing\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Kiedy NIE u\u017cywamy?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-49e5016 elementor-widget elementor-widget-text-editor\" data-id=\"49e5016\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Chcemy uzyska\u0107 100% pokrycia <br>Testowanie wszystkich funkcji, \u0142\u0105cznie z getterami i setterami nie ma sensu. Je\u017celi tak podstawowe funkcje nie dzia\u0142aj\u0105, to oznacza to, \u017ce co\u015b si\u0119 dzieje z ca\u0142ym j\u0119zykiem programowania lub kompilatorem, a nie naszym kodem.<\/li>\n<li>Prototypowanie <br>Jest to eksperyment, kt\u00f3ry ma nam pokaza\u0107, czy co\u015b dzia\u0142a, czy nie dzia\u0142a. Nie jest to kod maj\u0105cy by\u0107 zamieniony na prawdziwy system, wi\u0119c nie trzeba wtedy robi\u0107 TDD.<\/li>\n<li>Game Dev <br>Pisanie test\u00f3w do tego jak wygl\u0105da dana posta\u0107 b\u0105d\u017a jak si\u0119 rusza nie ma sensu.<\/li>\n<li>UI\/Wygl\u0105d<br>Nie powinni\u015bmy testowa\u0107 w kt\u00f3rym miejscu jest Label, a kt\u00f3rym Button. Owszem, nale\u017cy przetestowa\u0107, czy ten przycisk dzia\u0142a po klikni\u0119ciu, ale nie jego wygl\u0105d.<\/li>\n<li>Data Science<\/li>\n<\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-989392c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"989392c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-caa6e2b\" data-id=\"caa6e2b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-903a5dd elementor-widget elementor-widget-heading\" data-id=\"903a5dd\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"defects\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Wady TDD<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6f5c30a elementor-widget elementor-widget-text-editor\" data-id=\"6f5c30a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>Spowalnia pisanie kodu produkcyjnego<\/li><li>Blokuje pisanie prostych funkcji (poniewa\u017c najpierw trzeba jeszcze napisa\u0107 do niej test)<\/li><li>Przy pisaniu nieczytelnych test\u00f3w ka\u017cdy b\u0142\u0105d mocno wyd\u0142u\u017ca prac\u0119<\/li><li>Niekt\u00f3re testy mog\u0105 zosta\u0107 tak napisane, \u017ce b\u0119d\u0105 zale\u017cne od innych i b\u0142\u0105d pierwszych b\u0119dzie powodowa\u0142 b\u0142\u0105d kolejnych<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-13d358a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"13d358a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0f7cfc3\" data-id=\"0f7cfc3\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bcbc2d3 elementor-widget elementor-widget-heading\" data-id=\"bcbc2d3\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"example\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Przyk\u0142ad<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0ddf23f elementor-widget elementor-widget-text-editor\" data-id=\"0ddf23f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Chcemy stworzy\u0107 metod\u0119, kt\u00f3ra sprawdza czy podana liczba jest pierwsza. Je\u017celi tak, zwraca warto\u015b\u0107 'true&#8217;, je\u017celi <br \/>nie- 'false&#8217;. Korzysta\u0107 b\u0119d\u0119 z jUnit5 i dzieli\u0107 linie kody wg zasad Behavior-Driven Development.<\/p><p>W pierwszej kolejno\u015bci tworzymy test do tej metody:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-30b00a8 elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"30b00a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>@Test\nvoid givenPrimeNumberShouldReturnTrue(){\n    \/\/given\n    Example example = new Example();\n    int number = 13;\n\n    \/\/then\n    assertTrue(example.isNumberPrime(number));\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4dfaf5b elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"4dfaf5b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"105\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-1024x105.png\" class=\"attachment-large size-large wp-image-602\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-1024x105.png 1024w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-300x31.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-768x79.png 768w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-1536x157.png 1536w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony.png 1815w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-daf105f elementor-widget elementor-widget-text-editor\" data-id=\"daf105f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Test nie przeszed\u0142, poniewa\u017c nie mamy utworzonej klasy, ani metody, kt\u00f3r\u0105 m\u00f3g\u0142by testowa\u0107. Zatem tworzymy najprostsz\u0105 implementacj\u0119 dzi\u0119ki kt\u00f3rej test przejdzie:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-44d8674 elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"44d8674\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>public class Example {\n    public boolean isNumberPrime(int number){\n        for(int i=2; i*i&lt;=number; i++){\n            if(number%i==0){\n                return false;\n            }\n        }\n        return true;\n    }\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9830df4 elementor-widget elementor-widget-image\" data-id=\"9830df4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"843\" height=\"82\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony.png\" class=\"attachment-large size-large wp-image-603\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony.png 843w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-300x29.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-768x75.png 768w\" sizes=\"(max-width: 843px) 100vw, 843px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-98cbabb elementor-widget elementor-widget-text-editor\" data-id=\"98cbabb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Test przeszed\u0142, znaczy \u017ce nasza metoda, dla liczby 13 jest prawid\u0142owa. Teraz nast\u0119puje faza Refactor. Przy czym nie uwa\u017cam, \u017ce nale\u017cy teraz co\u015b zmieni\u0107 w kodzie, wi\u0119c rozpoczniemy kolejny cykl. Sprawdzimy teraz, czy funkcja zwr\u00f3ci nam warto\u015b\u0107 'false&#8217; dla 1.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b2c42d1 elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"b2c42d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>@Test\nvoid given1ShouldReturnFalse(){\n    \/\/given\n    Example example = new Example();\n    int number = 1;\n\n    \/\/then\n    assertFalse(example.isNumberPrime(number));\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d32d732 elementor-widget elementor-widget-image\" data-id=\"d32d732\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"234\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony2-1024x234.png\" class=\"attachment-large size-large wp-image-604\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony2-1024x234.png 1024w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony2-300x69.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony2-768x176.png 768w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony2.png 1259w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bcc1df9 elementor-widget elementor-widget-text-editor\" data-id=\"bcc1df9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Test nie przeszed\u0142, poniewa\u017c nie mamy uwzgl\u0119dnionego w metodzie, \u017ce liczba 1 nie jest zaliczana do liczb pierwszych.<\/p><p>Czas na zaimplementowanie tego w metodzie.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b049428 elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"b049428\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>public boolean isNumberPrime(int number){\n    if(number == 1){\n        return false;\n    }\n    for(int i=2; i*i&lt;=number; i++){\n        if(number%i==0){\n            return false;\n        }\n    }\n    return true;\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cb9e361 elementor-widget elementor-widget-image\" data-id=\"cb9e361\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"89\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony2-1024x89.png\" class=\"attachment-large size-large wp-image-605\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony2-1024x89.png 1024w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony2-300x26.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony2-768x67.png 768w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony2.png 1328w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-47b5e6f elementor-widget elementor-widget-text-editor\" data-id=\"47b5e6f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Test przeszed\u0142. Teraz zastan\u00f3wny si\u0119, czy mo\u017cemy co\u015b zmieni\u0107 w kodzie. Nie mo\u017cemy zacz\u0105\u0107 iterowa\u0107 w p\u0119tli <i>for<\/i> <br \/>od 1, poniewa\u017c lieczby pierwsze dziel\u0105 si\u0119 tylko przez 1 i przez sam\u0105 siebie. Zacznijmy zatem kolejny cykl. Sprawdzimy teraz, czy podanie liczby ujemnej lub 0 zwr\u00f3ci nam warto\u015b\u0107 false (liczby pierwsze s\u0105 tylko dodatnie).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e97b5fa elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"e97b5fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>@Test\nvoid givenNegativeNumberOr0ShouldReturnFalse(){\n    \/\/given\n    Example example = new Example();\n    int number = -13;\n    int number2 = 0;\n\n    \/\/then\n    assertFalse(example.isNumberPrime(number));\n    assertFalse(example.isNumberPrime(number2));\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-70e796c elementor-widget elementor-widget-image\" data-id=\"70e796c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"203\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony3-1024x203.png\" class=\"attachment-large size-large wp-image-609\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony3-1024x203.png 1024w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony3-300x59.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony3-768x152.png 768w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony3.png 1460w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-12bf65a elementor-widget elementor-widget-text-editor\" data-id=\"12bf65a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Test jak wida\u0107 czerwony, czyli przechodzimy teraz do najprostszej implementacji.<br><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fae507a elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"fae507a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>public boolean isNumberPrime(int number){\n    if(number &lt;= 0){\n        return false;\n    }\n    if(number == 1){\n        return false;\n    }\n    for(int i=2; i*i&lt;=number; i++){\n        if(number%i==0){\n            return false;\n        }\n    }\n    return true;\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-187d4eb elementor-widget elementor-widget-image\" data-id=\"187d4eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1010\" height=\"130\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-3.png\" class=\"attachment-large size-large wp-image-610\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-3.png 1010w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-3-300x39.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-3-768x99.png 768w\" sizes=\"(max-width: 1010px) 100vw, 1010px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63d5c92 elementor-widget elementor-widget-text-editor\" data-id=\"63d5c92\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Wszystkie testy przechodz\u0105. Przechodzimy do fazy refaktor i po zastanowieniu si\u0119, stwierdzam, \u017ce kod mo\u017cna skr\u00f3ci\u0107 w taki spos\u00f3b:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ee988e3 elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"ee988e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>public boolean isNumberPrime(int number){\n    if(number &lt;= 1){\n        return false;\n    }\n    for(int i=2; i*i&lt;=number; i++){\n        if(number%i==0){\n            return false;\n        }\n    }\n    return true;\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-11507db elementor-widget elementor-widget-image\" data-id=\"11507db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"103\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-4-1024x103.png\" class=\"attachment-large size-large wp-image-611\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-4-1024x103.png 1024w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-4-300x30.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-4-768x77.png 768w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-4.png 1259w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1609a5 elementor-widget elementor-widget-text-editor\" data-id=\"c1609a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Testy ponownie przesz\u0142y.<\/p><p>Sprawdzimy jeszcze, czy algorytm dobrze sprawdzi najwi\u0119ksz\u0105 liczb\u0119 pierwsz\u0105 dla integer.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9d2bde8 elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"9d2bde8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>@Test\nvoid givenIntMaxValueShouldReturnTrue(){\n    \/\/given\n    Example example = new Example();\n    int number = Integer.MAX_VALUE;\n\n    \/\/then\n    assertTrue(example.isNumberPrime(number));\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bd55596 elementor-widget elementor-widget-image\" data-id=\"bd55596\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"214\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-4-1024x214.png\" class=\"attachment-large size-large wp-image-618\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-4-1024x214.png 1024w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-4-300x63.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-4-768x161.png 768w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-czerwony-4.png 1363w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-148166c elementor-widget elementor-widget-text-editor\" data-id=\"148166c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Najwi\u0119ksza warto\u015b\u0107 integer, czyli 2147483647 jest liczb\u0105 pierwsz\u0105. Oznacza to, \u017ce musimy uwzgl\u0119dni\u0107 to w naszej funkcji.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-484ce9f elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"484ce9f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>public boolean isNumberPrime(int number){\n    if(number &lt;= 1){\n        return false;\n    }\n    if(number == Integer.MAX_VALUE){\n        return true;\n    }\n    for(int i=2; i*i&lt;=number; i++){\n        if(number%i==0){\n            return false;\n        }\n    }\n    return true;\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7370093 elementor-widget elementor-widget-image\" data-id=\"7370093\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"980\" height=\"122\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-5.png\" class=\"attachment-large size-large wp-image-619\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-5.png 980w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-5-300x37.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-5-768x96.png 768w\" sizes=\"(max-width: 980px) 100vw, 980px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3dbfcf2 elementor-widget elementor-widget-text-editor\" data-id=\"3dbfcf2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Test przeszed\u0142, ale nie jest to najlepsze rozwi\u0105zanie. My\u015bl\u0119, \u017ce chodzi tu o p\u0119tl\u0119 for i mno\u017cenie licznika 'i&#8217;, kt\u00f3re przekracza maksymaln\u0105 warto\u015b\u0107 dla integer. Przechodzimy zatem do fazy refactor i spr\u00f3bujmy zmieni\u0107 nasz algorytm.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3c565f2 elementor-widget elementor-widget-elementor-syntax-highlighter\" data-id=\"3c565f2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementor-syntax-highlighter.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<pre><code class='language-java'>public boolean isNumberPrime(int number){\n    if(number &lt;= 1){\n        return false;\n    }\n    for(int i=2; i&lt;=Math.sqrt(number); i++){\n        if(number%i==0){\n            return false;\n        }\n    }\n    return true;\n} <\/code><\/pre><script>\nif (!document.getElementById('syntaxed-prism')) {\n\tvar my_awesome_script = document.createElement('script');\n\tmy_awesome_script.setAttribute('src','https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/plugins\/syntax-highlighter-for-elementor\/assets\/prism2.js');\n\tmy_awesome_script.setAttribute('id','syntaxed-prism');\n\tdocument.body.appendChild(my_awesome_script);\n} else {\n\twindow.Prism && Prism.highlightAll();\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-31ea7f4 elementor-widget elementor-widget-image\" data-id=\"31ea7f4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"149\" src=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-6-1024x149.png\" class=\"attachment-large size-large wp-image-620\" alt=\"\" srcset=\"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-6-1024x149.png 1024w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-6-300x44.png 300w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-6-768x112.png 768w, https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/wp-content\/uploads\/2023\/11\/test-zielony-6.png 1119w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d5a259d elementor-widget elementor-widget-text-editor\" data-id=\"d5a259d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Wszystkie testy przesz\u0142y. Algorytm dzia\u0142a.<\/p><p>W ten oto spos\u00f3b mo\u017cemy pisa\u0107 ca\u0142y program, nie tylko pojedyncze funkcje. Oczywi\u015bcie wi\u0119kszo\u015b\u0107 metod nie b\u0119dziemy testowa\u0107 a\u017c tak dok\u0142adnie, poniewa\u017c nie wszystkie metody tego potrzebuj\u0105.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-976cf72 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"976cf72\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d5c68ec\" data-id=\"d5c68ec\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-aad692d elementor-widget elementor-widget-heading\" data-id=\"aad692d\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"summary\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Podsumowanie<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8a0bf84 elementor-widget elementor-widget-text-editor\" data-id=\"8a0bf84\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Test-Driven Development jest jedn\u0105 z technik tworzenia oprogramowania, dlatego przy rozpoczynaniu nowego projektu nale\u017cy si\u0119 zastanowi\u0107, czy akurat ona b\u0119dzie pasowa\u0107. Jak wszystko ma swoje wady i zalety, jednak osobi\u015bcie uwa\u017cam j\u0105 za ciekawe rozwi\u0105zanie do rozwi\u0105zywania problem\u00f3w zanim one nast\u0105pni\u0105.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Jest to technika pisania oprogramowania, w kt\u00f3rej g\u0142\u00f3wn\u0105 ide\u0105 jest pisanie testu unitowego do funkcjonalno\u015bci, kt\u00f3ra jeszcze nie istnieje, a dopiero potem napisanie kodu implementuj\u0105cego t\u0105 funkcjonalno\u015b\u0107.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,24],"tags":[27,25,26,28],"class_list":["post-594","post","type-post","status-publish","format-standard","hentry","category-artykuly","category-testy-jednostkowe","tag-junit","tag-tdd","tag-test-driven-development","tag-testy-jednostkowe"],"_links":{"self":[{"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=594"}],"version-history":[{"count":20,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/594\/revisions"}],"predecessor-version":[{"id":914,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=\/wp\/v2\/posts\/594\/revisions\/914"}],"wp:attachment":[{"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klaudia-bernat.profesjonalnyprogramista.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}