Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
UnitTesting
Building Rock-Solid Software
Svetlin Nakov
Telerik Software Academy
http://academy.telerik.com
ManagerTechnica...
What is UnitTesting?
UnitTest – Definition
A unit test is a piece of code written by
a developer that exercises a very small,
specific area of ...
UnitTest – Example
int sum(int[] array) {
int sum = 0;
for (int i=0; i<array.length; i++)
sum += array[i];
return sum;
}
v...
UnitTesting – Some Facts
 Tests are pieces of code (small programs)
 In most cases unit tests are written by
developers,...
UnitTesting
Frameworks & JUnit
UnitTesting Frameworks
 JUnit
 The first popular unit testing framework
 Based on Java, written by Kent Beck & Co.
 Si...
UnitTesting Frameworks
 JUnit – the first unit testing framework
 www.junit.org
 Based on Java
 Developed by Erich Gam...
JUnit – Features
 Test code is annotated using Java 5
annotations
 Test code contains assertions
 Tests are grouped in ...
JUnit – Annotations
 @Test
 Annotates a test case method
 @Before, @After
 Annotates methods called before/after each ...
JUnit – Assertions
 Using org.junit.Assert class
 Assertions check a condition and throw exception if
the condition is n...
JUnit – Assertions (2)
 Conditions
 assertTrue(condition)
 assertFalse(condition)
 Forced test fail
 fail()
 Expecti...
 Java class that needs unit testing:
JUnit – Example
public class Sumator {
public int sum(int a, int b) {
int sum = a + ...
 JUnit based test class (fixture):
JUnit – Example
import org.junit.Test;
import static org.junit.Assert.*;
public class ...
 JUnit text fixture with setup and cleanup:
JUnit – Example
public class SumatorTest {
private Sumator sumator;
@Before p...
Test Suites
 Suits are sets of JUnit test classes
 We can define test suits with annotations:
import org.junit.runner.Ru...
Eclipse and JUnit
 Eclipse has
built-in
support for
integration
with JUnit
 Can create,
run and
debug JUnit
tests
Testing with JUnit
Live Demo
форумпрограмиране,форум уеб дизайн
курсовеи уроци по програмиране,уеб дизайн – безплатно
програмиранеза деца – безплатни к...
FreeTrainings @Telerik Academy
 C# Programming @Telerik Academy
 csharpfundamentals.telerik.com
 Telerik Software Acade...
Upcoming SlideShare
Loading in …5
×

Unit testing by Svetlin Nakov

4,498 views

Published on

Svetlin Nakov's presentation on Unit testing from VarnaConf 2013

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

Unit testing by Svetlin Nakov

  1. 1. UnitTesting Building Rock-Solid Software Svetlin Nakov Telerik Software Academy http://academy.telerik.com ManagerTechnicalTraining http://www.nakov.com
  2. 2. What is UnitTesting?
  3. 3. UnitTest – 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. 4. UnitTest – 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. 5. UnitTesting – 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 StudioTeamTest (VSTT)  NUnit, MbUnit, Gallio, etc. 5
  6. 6. UnitTesting Frameworks & JUnit
  7. 7. UnitTesting 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 StudioTeamTest (VSTT)  Developed by Microsoft, integrated inVS 7
  8. 8. UnitTesting Frameworks  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
  9. 9. JUnit – Features  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: java org.junit.runner.JUnitCore <test-class>
  10. 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 10
  11. 11. JUnit – Assertions  Using org.junit.Assert class  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)
  12. 12. JUnit – Assertions (2)  Conditions  assertTrue(condition)  assertFalse(condition)  Forced test fail  fail()  Expecting exception  @Test(expected=IndexOutOfBoundsExcept ion.class)
  13. 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. 14.  JUnit based 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. 15.  JUnit text 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. 16. Test Suites  Suits are sets of JUnit test classes  We can define test suits with annotations: 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. 17. Eclipse and JUnit  Eclipse has built-in support for integration with JUnit  Can create, run and debug JUnit tests
  18. 18. Testing with JUnit Live Demo
  19. 19. форумпрограмиране,форум уеб дизайн курсовеи уроци по програмиране,уеб дизайн – безплатно програмиранеза деца – безплатни курсове и уроци безплатенSEO курс -оптимизация за търсачки уроципо уеб дизайн, HTML,CSS, JavaScript,Photoshop уроципо програмиранеи уеб дизайн за ученици ASP.NETMVCкурс – HTML,SQL,C#,.NET,ASP.NETMVC безплатенкурс"Разработка на софтуер в cloud среда" BGCoder -онлайн състезателна система -online judge курсовеи уроци по програмиране,книги – безплатно отНаков безплатенкурс"Качествен програменкод" алгоакадемия – състезателно програмиране,състезания ASP.NETкурс -уеб програмиране,бази данни, C#,.NET,ASP.NET курсовеи уроци по програмиране– Телерик академия курсмобилни приложения с iPhone, Android,WP7,PhoneGap freeC#book, безплатна книга C#,книга Java,книга C# Дончо Минков -сайт за програмиране Николай Костов -блог за програмиране C#курс,програмиране,безплатно UnitTesting http://academy.telerik.com
  20. 20. FreeTrainings @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

×