Your SlideShare is downloading. ×
0
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 - Nakov's Talk @ VarnaConf 2013

15,720

Published on

Unit testing - презентацията на Наков на ВарнаКонф 2013 - http://www.varnaconf.com

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

No Downloads
Views
Total Views
15,720
On Slideshare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Unit Testing - Nakov's Talk @ VarnaConf 2013"

  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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×