1 / 20

Unit Testing

Unit Testing. Building Rock-Solid Software. Svetlin Nakov. Telerik Software Academy. http://academy.telerik.com. Manager Technical Training. http://www.nakov.com. What is Unit Testing?. Unit Test – Definition.

azana
Download Presentation

Unit Testing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unit Testing Building Rock-Solid Software Svetlin Nakov Telerik Software Academy http://academy.telerik.com Manager Technical Training http://www.nakov.com

  2. What is Unit Testing?

  3. Unit Test – Definition A unit test is a piece of code written by a developer that exercises a very small, specific area of functionality of the code being tested. “Program testing can be used to show the presence of bugs, but never to show their absence!” Edsger Dijkstra, [1972]

  4. Unit Test – Example int sum(int[] array) { int sum = 0; for (int i=0; i<array.length; i++) sum += array[i]; return sum; } void testSum() { if (sum(new int[]{1,2}) != 3) throw new TestFailedException("1+2 != 3"); if (sum(new int[]{-2}) != -2) throw new TestFailedException("-2 != -2"); if (sum(new int[]{}) != 0) throw new TestFailedException("0 != 0"); }

  5. Unit Testing – Some Facts • Tests are pieces of code (small programs) • In most cases unit tests are written by developers, not by QA engineers • Unit tests are released into the code repository (TFS / SVN / Git) along with the code they test • Unit testing framework is needed • Visual Studio Team Test (VSTT) • NUnit, MbUnit, Gallio, etc.

  6. Unit Testing Frameworks & JUnit

  7. Unit Testing Frameworks • JUnit • The first popular unit testing framework • Based on Java, written by Kent Beck & Co. • Similar frameworks have been developed for a broad range of computer languages • NUnit– for C# and all .NET languages • cppUnit, jsUnit, PhpUnit, PerlUnit, ... • Visual Studio Team Test (VSTT) • Developed by Microsoft, integrated in VS

  8. JUnit – the first unit testing framework www.junit.org Based on Java Developed by Erich Gamma and Kent Beck Unit testing frameworks have been developed for a broad range of computer languages NUnit – for C#, VB.NET and .NET languages cppUnit, DUnit, jsUnit, PhpUnit, PerlUnit, ... List of xUnit frameworks can be found at: http://www.testingfaqs.org/t-unit.html Unit Testing Frameworks

  9. Test code is annotated using Java 5 annotations Test code contains assertions Tests are grouped in test fixtures and test suites Several execution interfaces Eclipse integrated plug-in Console interface: JUnit – Features java org.junit.runner.JUnitCore <test-class>

  10. JUnit– Annotations • @Test • Annotates a test case method • @Before, @After • Annotates methods called before/after each test case • @BeforeClass, @AfterClass • Annotates methods called one time before and after all test cases in the class • @Ignore • Ignores a test case

  11. Usingorg.junit.Assertclass Assertions check a condition and throw exception if the condition is not satisfied Comparing values assertEquals ([message], expected value, calculated value) Comparing objects assertNull([message], object) assertNotNull([message], object) assertSame ([message], expected obj, calculated obj) JUnit – Assertions

  12. Conditions assertTrue(condition) assertFalse(condition) Forced test fail fail() Expecting exception @Test(expected=IndexOutOfBoundsException.class) JUnit – Assertions (2)

  13. Java class that needs unit testing: JUnit – Example public class Sumator { public int sum(int a, int b) { int sum = a + b; return sum; } public int sum(int... nums) { int sum = 0; for (int i = 0; i < nums; i++) sum += nums[i]; return sum; } }

  14. JUnitbased test class (fixture): JUnit – Example import org.junit.Test; import static org.junit.Assert.*; public class SumatorTest { @Test public void testSum() { Sumator sumator = new Sumator(); int sum = sumator.sum(new int[] {2,3,4}); assertEquals(sum, 9); } }

  15. JUnittext fixture with setup and cleanup: JUnit – Example public class SumatorTest { private Sumator sumator; @Before public void setUpTestCase() { this.sumator = new Sumator(); } @Test public void testSum() { int sum = sumator.sum(2, 3); assertEquals(sum, 5); } @After public void cleanUpTestCase() { this.sumator = null; } }

  16. Suits are sets of JUnittest classes We can define test suits with annotations: Test Suites import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(value=Suite.class) @SuiteClasses(value={Test1.class, Test2.class}) public class AllTests { }

  17. Eclipse has built-in support for integration with JUnit Can create, run and debug JUnittests Eclipse and JUnit

  18. Testing with JUnit Live Demo

  19. Unit Testing http://academy.telerik.com

  20. Free Trainings @ Telerik Academy • C# Programming @ Telerik Academy • csharpfundamentals.telerik.com • Telerik Software Academy • academy.telerik.com • Telerik Academy @ Facebook • facebook.com/TelerikAcademy • Telerik Software Academy Forums • forums.academy.telerik.com

More Related