4. Start with the tests!
If I needed to Add 1 + 1…
Clear Lines Consulting · clear-lines.com 11/8/2011 · 4
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/8/2011 · 5
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/8/2011 · 6
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/8/2011 · 7
8. If I needed to Add 1 + 1…
… Does the code work?
Clear Lines Consulting · clear-lines.com 11/8/2011 · 8
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/8/2011 · 10
11. Why should you care?
Clear Lines Consulting · clear-lines.com 11/8/2011 · 11
13. “To me, legacy code is
simply code without
tests.”
Michael Feathers,
Working Effectively with Legacy Code
Clear Lines Consulting · clear-lines.com 11/8/2011 · 13
14. Did I break everything?
Clear Lines Consulting · clear-lines.com 11/8/2011 · 14
15. Tests: a Vise holding your code steady
Clear Lines Consulting · clear-lines.com 11/8/2011 · 15
16. A good test is
» Fast
» Focused
» Replicable
» Automated
Clear Lines Consulting · clear-lines.com 11/8/2011 · 16
17. Refactoring: improve the
code structure, without
changing its external
behavior.
Clear Lines Consulting · clear-lines.com 11/8/2011 · 17
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/8/2011 · 18
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/8/2011 · 19
20. The Cast
» Me: Mathias Brandewinder
– mathias@clear-lines.com (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”
Clear Lines Consulting · clear-lines.com 11/8/2011 · 20