I’m hosting Chris Simon on a #JetBrains#livestream to discuss #TDD, #DDD, and #csharp. Not to be confused with D&D, which is about wizards, dragons, and dungeon masters… wait it's pretty similar.
We just shipped v2 Core Framework 2.8.0, Analyzers 1.13.0, and Visual Studio adapter 2.8.0. The primary purpose of this release is a new parallelism algorithm that should make test timing more reliable, and make thread deadlocks in your tests less likely.
There are some really great coders who don’t get #TDD and that’s OK but I wish they would not use that misunderstanding to just proclaim that it is useless. On the other hand we need to find a way to prove the usefulness without just saying that “you are holding it wrong”. #programming
Why? Because 3 separate times, I predicted how the test should fail, and it failed differently! They failed in the unexpected way because I had either written the test setup incorrectly, or misunderstood a library method¹.
Had I just looked out for a failing test, I would have started writing code to make it pass, and been disappointed that it didn't pass when I was done.
--
¹ Turns out Java's String.indent(4) normalizes line endings, meaning it will add a line ending to the last line, even if it didn't have one before! Surprise!
We just shipped v2 Core Framework 2.7.1, Analyzers 1.12.0, and Visual Studio adapter 2.5.8. This includes a few new assertion overloads, four new #Roslyn analyzers (and two new suppressors), and a handful of bug fixes.
If you were thinking of ordering your own copy of JitterTed's TDD Game, I recommend ordering soon, as I'm running low on inventory (and won't get more for another month or so).
Get your copy (or multiple copies—saves on shipping) today at https://tdd.cards
I'm taking a small break from live coding, so there will be no stream this Sunday.
But do return on Sunday, March 10. We'll start writing a game using #SwiftUI! What does test-driven development (#TDD) look like in a SwiftUI world?
The chat is lively: you can ask questions and help answer mine. Follow me on Twitch for the go-live notification. https://www.twitch.tv/qcoding
Phew, the second (maybe third) pretty big stand-alone #Python library (first was a script rather) that I wrote at my job within the last 12 months. (Not that common anymore.)
Each took roughly 1 month until v1. Each 1k+ lines of code. This time very #TDD style (the script not so much, because it was a one-off — well, two-off ;)
Unit tests are supposed to help you to find bugs. In some situations you need a Test Double, or a Mock object in your test. That can make it harder! Take a look at the Guided Learning Hour that I just published. https://youtu.be/OuRtBe07T9A#softwaredevelopment#tdd
Just had one of those great #tdd experiences where I adapted to a changing requirement by incrementally updating/adding tests, watching them fail as expected, changing the code until they passed, and then refactoring to cleanup while all tests stay green. It's such a great feeling to code with that level of confidence. Never gets old. And my production code got simpler & smaller as a result. #dotnet
Years ago, I paired for just 3 days with a mentor and my TDD practice was transformed. Years later, I paired with another and my TDD practice was transformed again.
I’ve seen a lot of wrong takes on test driven development, or #TDD, lately. Surprising, given that it’s just 3 simple steps to remember:
Write a unit test before writing code
Write the code to be tested
Tell everyone you’re doing TDD. Tell your friends, your family and your colleagues. Most importantly, tell the internet. Everyone must know you’re doing TDD. This is the most important step, and in fact, you can probably skip the first two steps and go straight to this one.