SlideShare une entreprise Scribd logo
1  sur  20
UnitTesting
Building Rock-Solid Software
Svetlin Nakov
Telerik Software Academy
http://academy.telerik.com
ManagerTechnicalTraining
http://www.nakov.com
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 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]
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");
}
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
UnitTesting
Frameworks & JUnit
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
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
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>
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
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)
JUnit – Assertions (2)
 Conditions
 assertTrue(condition)
 assertFalse(condition)
 Forced test fail
 fail()
 Expecting exception
 @Test(expected=IndexOutOfBoundsExcept
ion.class)
 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;
}
}
 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);
}
}
 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;
}
}
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 {
}
Eclipse and JUnit
 Eclipse has
built-in
support for
integration
with JUnit
 Can create,
run and
debug JUnit
tests
Testing with JUnit
Live Demo
форумпрограмиране,форум уеб дизайн
курсовеи уроци по програмиране,уеб дизайн – безплатно
програмиранеза деца – безплатни курсове и уроци
безплатен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
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

Contenu connexe

Tendances (20)

Unit Testing with JUnit4 by Ravikiran Janardhana
Unit Testing with JUnit4 by Ravikiran JanardhanaUnit Testing with JUnit4 by Ravikiran Janardhana
Unit Testing with JUnit4 by Ravikiran Janardhana
 
Unit testing with JUnit
Unit testing with JUnitUnit testing with JUnit
Unit testing with JUnit
 
Junit 4.0
Junit 4.0Junit 4.0
Junit 4.0
 
What is JUnit? | Edureka
What is JUnit? | EdurekaWhat is JUnit? | Edureka
What is JUnit? | Edureka
 
testng
testngtestng
testng
 
Junit
JunitJunit
Junit
 
Junit
JunitJunit
Junit
 
TestNG vs JUnit: cease fire or the end of the war
TestNG vs JUnit: cease fire or the end of the warTestNG vs JUnit: cease fire or the end of the war
TestNG vs JUnit: cease fire or the end of the war
 
xUnit Style Database Testing
xUnit Style Database TestingxUnit Style Database Testing
xUnit Style Database Testing
 
JUnit 4
JUnit 4JUnit 4
JUnit 4
 
C++ Unit Test with Google Testing Framework
C++ Unit Test with Google Testing FrameworkC++ Unit Test with Google Testing Framework
C++ Unit Test with Google Testing Framework
 
Java Unit Testing
Java Unit TestingJava Unit Testing
Java Unit Testing
 
TestNG vs Junit
TestNG vs JunitTestNG vs Junit
TestNG vs Junit
 
Unit testing
Unit testingUnit testing
Unit testing
 
Introduction To J unit
Introduction To J unitIntroduction To J unit
Introduction To J unit
 
TestNG vs. JUnit4
TestNG vs. JUnit4TestNG vs. JUnit4
TestNG vs. JUnit4
 
TestNG introduction
TestNG introductionTestNG introduction
TestNG introduction
 
Junit4&testng presentation
Junit4&testng presentationJunit4&testng presentation
Junit4&testng presentation
 
Junit
JunitJunit
Junit
 
Introduction to JUnit
Introduction to JUnitIntroduction to JUnit
Introduction to JUnit
 

Similaire à Unit testing by Svetlin Nakov (20)

J unit presentation
J unit presentationJ unit presentation
J unit presentation
 
JUnit Presentation
JUnit PresentationJUnit Presentation
JUnit Presentation
 
8-testing.pptx
8-testing.pptx8-testing.pptx
8-testing.pptx
 
Test ng tutorial
Test ng tutorialTest ng tutorial
Test ng tutorial
 
Unit Testing in Java
Unit Testing in JavaUnit Testing in Java
Unit Testing in Java
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Unit test
Unit testUnit test
Unit test
 
3 j unit
3 j unit3 j unit
3 j unit
 
31b - JUnit and Mockito.pdf
31b - JUnit and Mockito.pdf31b - JUnit and Mockito.pdf
31b - JUnit and Mockito.pdf
 
Junit 5 - Maior e melhor
Junit 5 - Maior e melhorJunit 5 - Maior e melhor
Junit 5 - Maior e melhor
 
Unit Testing in .NET Core 7.0 with XUnit.pptx
Unit Testing in .NET Core 7.0 with XUnit.pptxUnit Testing in .NET Core 7.0 with XUnit.pptx
Unit Testing in .NET Core 7.0 with XUnit.pptx
 
Security Testing
Security TestingSecurity Testing
Security Testing
 
Testing with Junit4
Testing with Junit4Testing with Junit4
Testing with Junit4
 
TestNG Framework
TestNG Framework TestNG Framework
TestNG Framework
 
Junit With Eclipse
Junit With EclipseJunit With Eclipse
Junit With Eclipse
 
Junit and cactus
Junit and cactusJunit and cactus
Junit and cactus
 
Testes? Mas isso não aumenta o tempo de projecto? Não quero...
Testes? Mas isso não aumenta o tempo de projecto? Não quero...Testes? Mas isso não aumenta o tempo de projecto? Não quero...
Testes? Mas isso não aumenta o tempo de projecto? Não quero...
 
SE2018_Lec 20_ Test-Driven Development (TDD)
SE2018_Lec 20_ Test-Driven Development (TDD)SE2018_Lec 20_ Test-Driven Development (TDD)
SE2018_Lec 20_ Test-Driven Development (TDD)
 
Python unit testing
Python unit testingPython unit testing
Python unit testing
 
Android testing
Android testingAndroid testing
Android testing
 

Dernier

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 

Dernier (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 

Unit testing by Svetlin Nakov

  • 1. UnitTesting Building Rock-Solid Software Svetlin Nakov Telerik Software Academy http://academy.telerik.com ManagerTechnicalTraining http://www.nakov.com
  • 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. 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. 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
  • 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. 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. 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. 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. 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. JUnit – Assertions (2)  Conditions  assertTrue(condition)  assertFalse(condition)  Forced test fail  fail()  Expecting exception  @Test(expected=IndexOutOfBoundsExcept ion.class)
  • 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.  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.  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. 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. Eclipse and JUnit  Eclipse has built-in support for integration with JUnit  Can create, run and debug JUnit tests
  • 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. 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