---
title: "Summary Day 1"
url: "https://courses.osherove.com/courses/tdd-in-net-in-hebrew/summary-day-1.md"
canonical: "https://courses.osherove.com/courses/tdd-in-net-in-hebrew/summary-day-1/"
tags: []
author: "Roy Osherove"
description: "Lesson 6 of 22 in TDD in .NET in Hebrew (Day1 - Unit Testing and TDD 101), 8:45. Free video by Roy Osherove."
usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)."
license: "https://creativecommons.org/licenses/by/4.0/"
---

# Summary Day 1

1. [Courses](https://courses.osherove.com/#courses)
2. [TDD in .NET in Hebrew](https://courses.osherove.com/courses/tdd-in-net-in-hebrew/)
3. Day1 - Unit Testing and TDD 101

Lesson 6 of 22

Duration: 8:45 [Watch on YouTube](https://www.youtube.com/watch?v=yLBhRenZBeA) Spoken in Hebrew

## In this lesson

Roy Osherove notes that by the end of the first day most participants were writing the test first and arguing about implementation, design and [readability](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-9 "Readability (The Art of Unit Testing, 3rd ed., ch. 9)") rather than whether to test at all. He previews the second day: replacing the console earlier was a kind of [mock object](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-4#sigil_toc_id_76 "Interaction testing, mocks, and stubs (The Art of Unit Testing, 3rd ed., ch. 4)"), the difference between a mock (which the test asserts against, [one per test](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4#ch04lev1sec5 "One mock per test (The Art of Unit Testing, 2nd ed., ch. 4)")) and a [stub](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-3#sigil_toc_id_62 "Reasons to use stubs (The Art of Unit Testing, 3rd ed., ch. 3)") (any number per test), and frameworks such as [NSubstitute](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html "FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition? (osherove.com)"). He asks everyone to redo the [string calculator exercise](https://osherove.com/tdd-kata-1 "TDD Kata 1 - String Calculator (osherove.com)") from scratch for ten to fifteen minutes every morning so they do not forget what they learned.

## Transcript

1,260 words

[\[00:04\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=4s) חסרים לי עוד אנשים >> לא נורא לא הרבה אוקיי שאלות על דברים שעשינו היום אוקיי אני אני מקווה שהתחלתם לשים לב שרוב הזמן כבר כתבתם את הטסט קודם וכבר לא היה אכפת לכם מישהו הרגיש את הנושא הזה שזה כבר לא משנה שכותבים את הטestט קודם שזה פשוט הדרך לכתוב את זה וזה כבר it's not a וזה מה שרציתי שתחילו קצת להרגיש שהמטרה של הטestטים זה ליצור פונקציונליות חדשה הטestטים אחרי זה נותנים רשת ביטחון ופתאום מגלים בעגים ואפשר לבד שלא שברת כלום אבל ה המוזרות הזאת שחשבים בהתחלה שתחילו את הטestן ולפעמים שוכחים זה משהו שבדרך כלל מתחיל לעבור ביום הראשון ביום השני אבל עדיין אתם בסך הכל עושים את זה אולי חמש שעות אולי ארבע וחצי שעות זה בסדר אם עדיין אתם חלקי חכם עדיין מרגישים לא בנוח עם הדבר הזה אבל אני שמתי לב שלקראת הסוף עיקר הדיבורים היו דווקא על סוגי מימוש ועל הדיזיין שנוצר מהדברים האלה ועלביליטי

[\[01:04\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=64s) והרבה פחות על כדאי לי לבדוק את זה או לא כדאי לי לבדוק את זה כבר היה על דברים הרבה יותר ממשיים כמו איך כדאי לי לבדוק את זה שווה לי לכתוב את הסרט ככה איך הטestט יותר קרי או פחות קרי ובכלל אם יש איזה או איך לעשות ריפאקטורים לקוד וזה סוג הדיונים שמאוד חשוב שיהיה וזה סוג הדיונים דרך אגב שאני מאוד מקווה שיהיה לכם גם בהמשך הנושא של הקוד במהלך הלימוד של הטestטים מאוד מאוד חשוב כי הרדבילי זה אחד הדברים שנורא נורא קל לשכוח ממנו אז אפילו טestטים שאפשר לעשות אותם יותר פשוטים כ אינפוטים יותר פשוטים זה דבר מאוד חשוב

[\[01:43\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=103s) ופלק ממכם שמו לב שגם אני קצת התפרעתי עליכם מבחינת זה שיש שיש קוד שפשוט לא הייתי מוכן לקבל מבחינת הקריאות שלו וזה חשוב מאוד כי יש איזשהו סוג של מקצוענות שאתם שאתם אומרים על עצמכם אם אתם מתחילים לכתוב בוניטest המקצוע הזאת אומרת לא רק שהקוד שלי עובד אלא אני גם מנסה לעשות אותו קרי ככל האפשר קרי ללא פחות ממה שהטestטים שלי קריאים זה שהטestטים שלי קריאים זה יפה אבל אם הטestטים שלי יש לי 20 טestטים ויש לי פונקציה מפה מהתקרה ועד לרצוה בפונקציה אחת משהו לא בסדר

[\[02:17\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=137s) אוקיי זה מאוד מאוד חשוב כי יש לנו איזשהי איזשהו דגש עלמטיity ככל שהפונקציה יותר ארוכה המטבabity של הסוב וזה משהו משהו שגם לשים דגש אליו בימים הבאים. ביום רביעי אנחנו ניכנס לעולם קצת יותר מורכב שאולי ראיתם אותו קצת בקונסול שניסינו לעשות. מה קורה כשיש לי כשאני אנסה לשלוט בדפטי? פאטי במקרה הזה היה קונסול ואפילו במקרה הזה הקונסול נתן לנו API כדי לשלוט בו.

[\[02:47\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=167s) הוא נתן לנו API כדי להחליף אותו ועדיין זה לא הרגיש ממש נוח. אז אנחנו נדבר על עוד הרבה שיטות איך להחליף דברים כדי שתהיה לנו שיטה עליהם. בעצם כשהחלפנו את הקונסול out עשינו ובדקנו את הסטרינ מה שיצרנו היה סוג של more objects mo objectה שנראה כמו הדבר האמיתי אבל הוא עוזר לנו להחליט אם הטest עבר או לא משהו שהוא [פייק](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4#ch04lev1sec2 "The difference between mocks and stubs (The Art of Unit Testing, 2nd ed., ch. 4)") אבל אנחנו עושים עליו אסרט ולתצורך העניין יש עוד דבר שהוא פיק שנקרא [stub](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-3#ch03lev1sec1 "Introducing stubs (The Art of Unit Testing, 2nd ed., ch. 3)") ההבדל בין mor objects לstubs זה שטבס נראים בדיוק כמו מobטקס אבל אנחנו לא עושים עליהם הם מחליפים משהו כדי שנוכל לבדוק משהו אחר אז אז בכל מקרה שיש לכם איזשהו אובייקט שהוא פייק שהוא נראה כמו משהו אחר אז הדרך לדעת אם זה מוקט או סטב זה פשוט להסתכל על הסרטים ולהגיד אם אני עושה עליו אם כן זה מobט אם לא זה [סטאב](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-3#sigil_toc_id_62 "Reasons to use stubs (The Art of Unit Testing, 3rd ed., ch. 3)") למה חשוב לנו לדעת את ההבדל ביניהם כי בדרך כלל בטestטים

[\[03:44\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=224s) אנחנו לא רוצים שיהיה לנו יותר [ממוק](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4 "Interaction testing using mock objects (The Art of Unit Testing, 2nd ed., ch. 4)") object אחד יכולים להיות לנו הרבה סאבים אבל מ object אחד היותר כי mor object זה בעצם על קריאה לרד פטי זה resultלט ובדרך כלל אנחנו לא רוצים לבדוק יותר מדבר אחד בטestטים. מישהו זוכר למה? למה? >> כן. יכול להיות שאחד נחשב ואחד הצליח ואז אתה לא יודע מהפק. >> בדיוק. אז אם יש לי שני מוק object בטest והאינטראקציה עם הראשון נכשלה, אני אף פעם לא אדע מה קרה עם השני. ולכן מוק objects אני חל מחפש רק אחד הטestטים.

[\[04:15\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=255s) וזה חשוב מאוד לקוד להבין שיש לי הרבה פייקים, אבל רק אחד מהם צריך להיות כמו פרובקט. בכל השאר הם סטבים וזה ה זה הטרמינולוגיה בגדול. יש קונספט כזה ואנחנו נעבור עליו עוד פעם ביום רביעי אל תדאגו אתה בטלוויזיה הזאת אבל תמשיך לקרות פעם אז ביום רביעי תתכוננו ליום טיפ טיפה יותר מסובך מבחינת הפאטרנים היום היה יחסית רגוע הכל ככה הלך בכיף וזה בסדר יום רביעי יהיה קצת דייבים והרבה אנשים אומרים בדרך כלל שביום ביום השני לקורס יש איזשהיא עלייה בדרגה של ה

[\[04:49\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=289s) של המורכבות אבל ביום ביום השלישי של הקורס תבינו שזה לא היה עלייה כזה גדולה ביום השני. אוקיי? כי היום השלישי אנחנו ניכנס ללגסיק. שם באמת המעורבות נהיית מאוד מאוד מסובכת. אבל הטכניקות שאנחנו ביום השני של ריפאקטורים גם בקוד קיים יעזרו לנו מאוד ביום השלישי. אנחנו גם נסתכל על פרימוקים כמוסיקי

[\[05:22\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=322s) די אין סבסיטוט וגם ביום ביום האחרון למישהו אומרים יצא לעבוד עם משהו חוץ מרנו עם מה >> מוק וההפוnet אוקיי בג'אה זה משהו ש קצת ישן והוא ואנחנו לא לא נסתכל עליו היה גם לדוט אבל הוא נפטר מסיירה טובה. אף אחד לא מתפקד עובדית יותר וגם שלו היה די נורא. אה אחד הדברים היפים זה שבדוטנט הרבה מהפרמוקים והרבה מההתקדמות בדוטנט היא הרבה יותר מהירה בג'אבה בעולם היוטיסים היום.

[\[05:57\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=357s) היא יותר מהירה מאשר בג'אבה. פעם ג'אוה היה לה עבר מאוד עשיר של יוניטestינג. זה היה כאן בכל הכלים. היום בטניט הייתה התקדמות ממש ממש מהירה עד כדי מצב שהיום ג'אה והמתכנית ג'אבה לוקחים המון קונספטים שיש ב-NUnit כמו אטריבטס וכולי ושמים אותם ב-JUnit וזה משהו שנורא כיף לחשוב לו כי הרבה פעמים בעולם הדוטנט אנחנו קצת עוקבים אחרי העולם שמסביבנו אז תחשבו על דנט וג'אה אז אז יש גם את עולם הרובי וגם שם הנושא של unit testting הוא מאוד מאוד חזק אבל גם שםש testing בעיקר [unit testing](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-1#sigil_toc_id_17 "Defining unit testing, step by step (The Art of Unit Testing, 3rd ed., ch. 1)") עדיין לא נכנס כל כך.

[\[06:36\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=396s) Testing הולך חבל על הזמן. אז אנחנו גם נדבר קצת על הפנס of האלה ביום השלישי. אם יש למישהו דברים או שאלות או כל דבר שהוא רוצה לשאול אותי בצורה אסינכרונית אז האימייל שלי כי אנחנו ניפגש רק ביום רביעי. האימייל שזה רואה את אושרדו. אז אתם מוזמנים לשלוח לי אימייל ופשוט לשאול שאלה. להגיד תגידו שאתם קורס כי אני לא אזכור A זה אני סלב ואני אזכור איזה חברהסט

[\[07:08\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=428s) >> מי שלא זוכר את מה שכתוב שם לי יש את האימייל שלו לא זוכר מי זה סלב לא >> כולנו צים להדפיק מי זה סלב >> אבל אבל אני לא יודע איך להגיד לך את זה בכל חברה מצליחה יש איזה סלב אחד שהוא שכותב את כל הקוד הטובת איזה לא זה לאחבר >> רציתי להחמיא לך אבל אתה פשוט זכית אותי >> בסדר זו דחה גם אתה סליחה באתי קודם >> הרחבת אחים טוב בסדר אתה גם אמרת לי קודם שהב שלי באתר לא משהו אז בסדר לא שכוער לא אמרתי שהוא לא משהו

[\[07:46\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=466s) אולי ניפגש ביום רביעי ואולי לא נראה חבר'ה תודה רבה אני מקווה שנהנתם ביום רביעי אנחנו נחזור עלי הדבר הזה אני ממליץ כל בוקר אחר ממחר אתם באים לפה קחו 10 דקות חו רבע שעה תשבו מור למחשב שלכם תלכו על הסטרים קלטור תנסו להתחיל אותו מהתחלה תראו לאן אתם מגיעים ברבע שעה בחצי שעה המטרה היא שתוכלו לסיים את כל התאטה בחצי שעה אבל כולל כל הריפקטורים כולל כל הדברים תראו מה המהירות שלכם בעבודה לבד תנסו וגם זה חשוב מאוד כי זה יזכיר לכם את ה זה מאוד חשוב המסל ממורי בטיפ דין מאוד חשוב אם אתם לא תתרגלו את זה כל בוקר לבחות בשבועיים הקרובים יום אנחנו אתם תשכחו הרבה ממה שלמדתם היום אז קחו 10 דקות כל בוקר תנסו לעשות את הדבר הזה.

[\[08:32\]](https://www.youtube.com/watch?v=yLBhRenZBeA&t=512s) בסדר? שאלות טוב לדרו שניה

## Related

- [TDD Kata 1 - String Calculator](https://osherove.com/tdd-kata-1) · osherove.com

    The original String Calculator kata, meant for 15 minutes of daily practice, as Roy asks the group to do each morning.

- [Mocks and Stubs - The difference is in the flow of information](https://osherove.com/blog/2007/9/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.html) · osherove.com

    Short explanation of the mock versus stub difference that the lesson previews for day two.

- [One mock per test](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4#ch04lev1sec5) · The Art of Unit Testing, 2nd ed., ch. 4

    Book section on one mock per test, the rule the preview states alongside many stubs per test.

### Also linked in this lesson

#### The Art of Unit Testing, 3rd ed.

- [Readability](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-9), ch. 9
- [Interaction testing, mocks, and stubs](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-4#sigil_toc_id_76), ch. 4
- [Reasons to use stubs](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-3#sigil_toc_id_62), ch. 3
- [Defining unit testing, step by step](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-1#sigil_toc_id_17), ch. 1

#### The Art of Unit Testing, 2nd ed.

- [The difference between mocks and stubs](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4#ch04lev1sec2), ch. 4
- [Introducing stubs](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-3#ch03lev1sec1), ch. 3
- [Interaction testing using mock objects](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4), ch. 4

#### osherove.com

- [FakeItEasy or NSubstitute? Which should I use for samples in art of unit testing 2nd edition?](https://osherove.com/blog/2012/6/26/fakeiteasy-or-nsubstitute-which-should-i-use-for-samples-in.html)

[Previous lesson TDD Demo](https://courses.osherove.com/courses/tdd-in-net-in-hebrew/tdd-demo/) [Next lesson TDD Q & A](https://courses.osherove.com/courses/tdd-in-net-in-hebrew/tdd-q-and-a/)


---

## About the author

**Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery.

### Sites

- [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership.
- [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts.
- [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin.
- [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model.
- [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps.
- [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes).

### Social

- X: https://x.com/royosherove
- LinkedIn: https://www.linkedin.com/in/osherove/

### Contact

- Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7

### License

Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/
