Tests Unitaires: Difference between revisions
From My Limbic Wiki
No edit summary |
No edit summary |
||
Line 25: | Line 25: | ||
===Stubbing Variations=== | ===Stubbing Variations=== | ||
* Argument Matchers | * Argument Matchers | ||
==Spy== | |||
A Spy is a Stub than is also collecting informations during the test | |||
** How many times this method is called ? | |||
** Is this method is called at least once ? | |||
==Mock== | ==Mock== | ||
Fullclass with implementation, same comportement as in real code. | Fullclass with implementation, same comportement as in real code. |
Revision as of 16:12, 25 September 2020
Before & After
@Before @After
The method with this annotation is executed before or after every test method
@BeforeClass @AfterClass
The method with this annotation is executed before or after every test class
Parametrize Test
- On top of the test class @RunWith(Parameterized.class)
- method annotated with @Parameter is passing Arrays.asList()
Mockito
Mocks vs Stubs = Behavioral testing vs State testing
Stubbing
Empty class, only return the expected
- cannot be dinamically created from code
<source lang="Java"> MyMockedService myMockedService = new MyMockedService(); stub(myMockedService.methodToTest("param")).return("value"); </source>
Test lifecycle with stubs:
- Setup - Prepare object that is being tested and its stubs collaborators.
- Exercise - Test the functionality.
- Verify state - Use asserts to check object's state.
- Teardown - Clean up resources.
Stubbing Variations
- Argument Matchers
Spy
A Spy is a Stub than is also collecting informations during the test
- How many times this method is called ?
- Is this method is called at least once ?
Mock
Fullclass with implementation, same comportement as in real code.
- Creating Objects that simulate the behavior of real objects
- can be dynamically created from code - at runtime
- offer more fonctionnalities than stubbing
- How many times this method is called ?
- Is this method is called at least once ?
<source lang="Java"> MyMockedService myMockedService = mock(MyMockService.class); when(myMockedService.methodToTest("param")).thenReturn("value"); </source>
Test lifecycle with mocks
- Setup data - Prepare object that is being tested.
- Setup expectations - Prepare expectations in mock that is being used by primary object.
- Exercise - Test the functionality.
- Verify expectations - Verify that correct methods has been invoked in mock.
- Verify state - Use asserts to check object's state.
- Teardown - Clean up resources.