Date post: | 14-Jan-2015 |
Category: |
Technology |
Upload: | mark-a |
View: | 393 times |
Download: | 0 times |
Clear Lines Consulting · clear-lines.com 11/6/2011 · 1
What is TDD? (answer: Test-Driven Development)
… and why you should care
Clear Lines Consulting · clear-lines.com 11/6/2011 · 2
Once upon a Time…
Design
Implement
Test
Clear Lines Consulting · clear-lines.com 11/6/2011 · 3
Stay buggy, my friends!
Clear Lines Consulting · clear-lines.com 11/6/2011 · 4
Start with the tests!
If I needed to Add 1 + 1…
Clear Lines Consulting · clear-lines.com 11/6/2011 · 5
If I needed to Add 1 + 1…
[Test]public void When_Adding_One_Plus_One_Answer_Should_Be_Two(){ // Assert var expectedResult = 2; Assert.That(actualResult, Is.EqualTo(expectedResult));}
… I would expect the answer to be 2
Clear Lines Consulting · clear-lines.com 11/6/2011 · 6
If I needed to Add 1 + 1…
[Test]public void When_Adding_One_Plus_One_Answer_Should_Be_Two(){ // Act var actualResult = calculator.Add(1, 1);
// Assert var expectedResult = 2; Assert.That(actualResult, Is.EqualTo(expectedResult));}
… I would need a Calculator
Clear Lines Consulting · clear-lines.com 11/6/2011 · 7
If I needed to Add 1 + 1…
[Test]public void When_Adding_One_Plus_One_Answer_Should_Be_Two(){ // Arrange var calculator = new Calculator();
// Act var actualResult = calculator.Add(1, 1);
// Assert var expectedResult = 2; Assert.That(actualResult, Is.EqualTo(expectedResult));}
… I would need some code
Clear Lines Consulting · clear-lines.com 11/6/2011 · 8
If I needed to Add 1 + 1…
… Does the code work?
Clear Lines Consulting · clear-lines.com 11/6/2011 · 9
MsTest
Testing frameworks
Clear Lines Consulting · clear-lines.com 11/6/2011 · 10
It’s not about Testing
» It’s about writing Code that works, now» Imagine you had implemented the feature» … then implement it» Rinse & Repeat until you have no test to write
Clear Lines Consulting · clear-lines.com 11/6/2011 · 11
Why should you care?
Clear Lines Consulting · clear-lines.com 11/6/2011 · 12
© www.dilbert.com
The dreaded L word
Clear Lines Consulting · clear-lines.com 11/6/2011 · 13
“To me, legacy code is simply code without tests.”
Michael Feathers,Working Effectively with Legacy Code
Clear Lines Consulting · clear-lines.com 11/6/2011 · 14
Did I break everything?
Clear Lines Consulting · clear-lines.com 11/6/2011 · 15
Tests: a Vise holding your code steady
Clear Lines Consulting · clear-lines.com 11/6/2011 · 16
A good test is
» Fast» Focused» Replicable» Automated
Clear Lines Consulting · clear-lines.com 11/6/2011 · 17
Refactoring: improve the code structure, without changing its external behavior.
Clear Lines Consulting · clear-lines.com 11/6/2011 · 18
Red, Green, Refactor
»Red: write a little test that doesn’t work
»Green: make the test work quickly
»Refactor: cleanup time!
Clear Lines Consulting · clear-lines.com 11/6/2011 · 19
Test-Driven Development is a way of managing fear during programming.
Kent Beck,Test-Driven Development by Example
Clear Lines Consulting · clear-lines.com 11/6/2011 · 20
The Cast
» Me: Mathias Brandewinder– [email protected] (clear-lines.com/blog)
» Frameworks/Tools– NUnit: www.nunit.org– xUnit: xunit.codeplex.com/– Resharper: www.jetbrains.com/resharper/
» Books– Kent Beck, “Test Driven Development by Example”– Michael Feathers, “Working Effectively with Legacy Code”– Roy Osherove, “The Art of Unit Testing”