Download presentation
Presentation is loading. Please wait.
1
Building Rock-Solid Software Svetlin Nakov Telerik Software Academy http://academy.telerik.com Manager Technical Training http://www.nakov.com
3
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
int sum(int[] array) { int sum = 0; int sum = 0; for (int i=0; i<array.length; i++) for (int i=0; i<array.length; i++) sum += array[i]; sum += array[i]; return sum; return sum;} void testSum() { if (sum(new int[]{1,2}) != 3) if (sum(new int[]{1,2}) != 3) throw new TestFailedException("1+2 != 3"); throw new TestFailedException("1+2 != 3"); if (sum(new int[]{-2}) != -2) if (sum(new int[]{-2}) != -2) throw new TestFailedException("-2 != -2"); throw new TestFailedException("-2 != -2"); if (sum(new int[]{}) != 0) if (sum(new int[]{}) != 0) throw new TestFailedException("0 != 0"); throw new TestFailedException("0 != 0");}
5
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. 5
7
JUnit The first popular unit testing framework Based on Java, written by Based on Java, written by Kent Beck & Co.Kent Beck 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 7
8
JUnit – the first unit testing framework www.junit.org 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 http://www.testingfaqs.org/t-unit.html
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: java org.junit.runner.JUnitCore java org.junit.runner.JUnitCore
10
@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
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
Conditions assertTrue(condition) assertFalse(condition) Forced test fail fail() Expecting exception @Test(expected=IndexOutOfBoundsExcept ion.class)
13
Java class that needs unit testing: public class Sumator { public int sum(int a, int b) { public int sum(int a, int b) { int sum = a + b; int sum = a + b; return sum; return sum; } public int sum(int... nums) { public int sum(int... nums) { int sum = 0; int sum = 0; for (int i = 0; i < nums; i++) for (int i = 0; i < nums; i++) sum += nums[i]; sum += nums[i]; return sum; return sum; }}
14
JUnit based test class (fixture): import org.junit.Test; import static org.junit.Assert.*; public class SumatorTest { @Test @Test public void testSum() { public void testSum() { Sumator sumator = new Sumator(); Sumator sumator = new Sumator(); int sum = sumator.sum(new int[] {2,3,4}); int sum = sumator.sum(new int[] {2,3,4}); assertEquals(sum, 9); assertEquals(sum, 9); }}
15
JUnit text fixture with setup and cleanup: public class SumatorTest { private Sumator sumator; private Sumator sumator; @Before public void setUpTestCase() { @Before public void setUpTestCase() { this.sumator = new Sumator(); this.sumator = new Sumator(); } @Test public void testSum() { @Test public void testSum() { int sum = sumator.sum(2, 3); int sum = sumator.sum(2, 3); assertEquals(sum, 5); assertEquals(sum, 5); } @After public void cleanUpTestCase() { @After public void cleanUpTestCase() { this.sumator = null; this.sumator = null; }}
16
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
Eclipse has built-in support for integration with JUnit Can create, run and debug JUnit tests
18
Live Demo
19
форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране http://academy.telerik.com
20
C# Programming @ Telerik Academy csharpfundamentals.telerik.com csharpfundamentals.telerik.com Telerik Software Academy academy.telerik.com academy.telerik.com Telerik Academy @ Facebook facebook.com/TelerikAcademy facebook.com/TelerikAcademy Telerik Software Academy Forums forums.academy.telerik.com forums.academy.telerik.com
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.