Your SlideShare is downloading. ×
0
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Intro to unit testing
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Intro to unit testing

720

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
720
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introduction to Unit Testing
  • 2. Static vs. Dynamic testing
  • 3. White-box testing vs. black-boxtesting
  • 4. There are four quadrants, then Static Dynamic Black-box Static black-box Dynamic black- testing box testing White-box Static white-box Dynamic white- testing box testing
  • 5. Static black-box testing¡  Cant see the code¡  Cant run the program¡  So, what can you do?¡  You can evaluate the requirements and plans
  • 6. Static white-box testing¡  Can see the code¡  But cant run it¡  What does this entail?¡  Code reviews
  • 7. Dynamic black-boxtesting¡  Cant look at the code¡  But you can run it¡  So, what is this?¡  Running test cases
  • 8. Dynamic white-boxtesting¡  You run the code …¡  While examining it¡  What is this called?¡  Unit testing or integration testing
  • 9. … but it isntdebugging
  • 10. Levels of dynamic white-boxtesting¡  Unit testing ¡  Lowest possible level ¡  Completely isolated from anything else¡  Integration testing ¡  Next level up ¡  Two or more units tested together¡  System testing ¡  Highest level ¡  All units tested together
  • 11. To avoid big-bang testing,you unit test and integratetest and system test¡  Big-bang testing can result in hard-to-find errors¡  System-level testing shows that errors exist¡  The lower-level tests show exactly the cause¡  But how do you do all three?!?
  • 12. A unit test tests one unit ofwork¡  One requirement for one method¡  They are: ¡  Isolated from other code ¡  Isolated from other developers ¡  Targeted ¡  Repeatable ¡  Predictable
  • 13. What is NOT unit testing? ...Anything else!¡  > 1 requirement¡  > 1 method¡  > 1 project¡  > 1 system¡  Affects > 1 developer
  • 14. Benefits of unit testing¡  Fewer errors¡  Better designed ¡  Unit testing requires good practices ¡  Repository pattern ¡  Dependency injection ¡  Inversion of Control ¡  Single responsibility¡  built-in regression testing¡  Puts a stop to recurring bugs ¡  When you discover a bug you write tests there and elsewhere to detect that same error
  • 15. Unit testing protects thedatabase¡  If you run against the database, you can corrupt the database with every test, especially failing ones¡  One test may cause the next one to fail
  • 16. Other types of tests¡  UI¡  Integration¡  Stress¡  UAT
  • 17. So, unit testing is awesome,but isnt it a lot of work?¡  If only we had a framework that would allow us to easily format our tests¡  If only we had some pre-written software that would allow us to see the results of those tests¡  A unit testing framework!¡  NUnit¡  MbUnit¡  xUnit¡  MSTest
  • 18. A brief look at NUnit ¡  sdfa
  • 19. Open yoursolution
  • 20. Add a test project¡  No user interface
  • 21. Download and install NUnit
  • 22. Add a reference to NUnit
  • 23. Add using statements
  • 24. Mark the class as aTestFixturenamespace UnitTests!{! [TestFixture]! public class EmployeeTests! {!…!
  • 25. Write a test and mark it as aTest[Test]!public void EmployeeSaysHi()!{! var e = new Employee();! var s = e.SayHi();! Assert.AreEqual(s, "Hello");!}!
  • 26. Comparison Assertions¡  AreEqual(x, y)¡  AreNotEqual(x, y)¡  AreSame(x, y)¡  AreNotSame(x, y)¡  Greater(x, y)¡  GreaterOrEqual(x, y)¡  Less(x, y)¡  LessOrEqual(x, y)
  • 27. Boolean Assertions¡  False(bool)¡  IsFalse(bool)¡  True(bool)¡  That(bool)¡  IsTrue(bool)
  • 28. Exception Assertions¡  Catch(exception)¡  Throws(exception)¡  DoesNotThrow(exception)
  • 29. Assert.*¡  IsAssignableFrom(Type, object) ¡  IsNotAssignableFrom(Type, obj)¡  IsEmpty(collection) ¡  IsNotEmpty(collection)¡  IsInstanceOf(Type, object) ¡  IsNotInstanceOf(Type, object)¡  IsNull(object) ¡  IsNotNull(object)¡  IsNullOrEmpty(string) ¡  IsNotNullOrEmpty(string)¡  Null(object) ¡  NotNull(object)¡  Contains(x, collection)¡  IsNaN(number)
  • 30. Hardcode Assertions¡  Pass()¡  Fail()¡  Inconclusive()¡  Ignore()
  • 31. Sometimes we want toensure that an exception isthrown¡  We sometimes have requirements that an exception should be thrown under certain circumstances ¡  Age cant go negative ¡  Etc.¡  We can mark a test as expecting that an exception will be thrown:[ExpectedException(! ExpectedException = typeof(Exception), ! ExpectedMessage = "Any message."! )]!public void HereIsMyTest() !{! …!}!
  • 32. Debugging the unit tests1.  Go Debug-Attach to process.2.  Find NUnits UI in the process list.3.  Set a breakpoint4.  In NUnit, hit Run
  • 33. Summary¡  Unit testing only occurs in complete isolation from every other requirement, method, user, etc.¡  Unit testing frameworks are pretty much indispensible¡  They allow us to make assertions

×