1.1 மொக்கிட்டோ நூலகம்

இன்று நாம் மேம்பட்ட சோதனையைப் பற்றி அறிந்து கொள்வோம். மேலும் குறிப்பாக, மொக்கிட்டோ நூலகத்துடன் . இந்தத் தொழிலில் இருந்து வெளியேறுவது பற்றி யோசிக்கவே வேண்டாம்.

முதலில், இந்த நூலகம் ஸ்பிரிங் டெஸ்டிங்கில் ஒரு தரநிலையாகும் . இது உண்மையில் ஜாவா பின்தள மேம்பாட்டுத் துறையில் தரநிலையாகும்.

இரண்டாவதாக, உங்கள் ஸ்பிரிங் குறியீட்டிற்கான சோதனைகளை நீங்கள் எழுத வேண்டும் . நீங்கள் எழுதிய பின்தளம் செயல்படுவதைப் புரிந்துகொள்வதற்கான ஒரே வழி, அதன் API இன் முறைகளை அழைப்பதுதான் . சோதனைகள் மூலம் அதைச் செய்வது அவை இல்லாமல் விட 10 மடங்கு எளிதானது. நீங்களே பார்ப்பீர்கள்.

pom.xmlகுறியீட்டைப் பயன்படுத்தி மொக்கிட்டோ நூலகத்தை உங்களுடன் சேர்க்கலாம் :

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>4.2.0</version>
    <scope>test</scope>
</dependency>

Mockito திட்டத்திற்கான முழு மூலக் குறியீட்டையும் GitHub இல் காணலாம் .

1.2 போலி பொருள்கள்

இந்த மொக்கிடோ என்றால் என்ன, அது ஏன் மிகவும் நல்லது?

சோதனையின் வளர்ச்சி மற்றும் வளர்ச்சியின் செயல்பாட்டில், ஒரு உண்மையான பொருளுக்குப் பதிலாக குறியீட்டில் சில வகையான "ஸ்டப்" நழுவ வேண்டிய அவசியம் அடிக்கடி இருந்தது.

எடுத்துக்காட்டாக, தரவுத்தளத்துடன் செயல்படும் குறியீடு சோதிக்கப்பட்டு அங்கு ஏதாவது மாற்றுகிறது. ஒவ்வொரு சோதனைக்கும் முன் இந்த தரவுத்தளத்தின் நிலை ஒரே மாதிரியாக இருப்பது நல்லது (இல்லையெனில் சோதனைகள் வித்தியாசமாக இருக்கும்). இந்த நிலைகளை விரைவாகப் பின்னுக்குத் தள்ள, அடிப்படை எளிமையாக இருக்க வேண்டும் என்று நான் விரும்புகிறேன்.

அல்லது, எடுத்துக்காட்டாக, பயனுள்ள SMS அனுப்பும் குறியீட்டை நீங்கள் சோதிக்கிறீர்கள். நேரடி அஞ்சல்களுக்கு, அவர் சில வகையான கட்டண SMS நுழைவாயிலைப் பயன்படுத்துகிறார். புரிந்துகொள்ள முடியாத நபர்களுக்கு நூற்றுக்கணக்கான எஸ்எம்எஸ் அனுப்பாமல் இருக்க, குறியீட்டைச் சோதிக்க சில மெய்நிகர் கேட்வேயை அதில் நழுவ விடுவது நல்லது.

அல்லது உங்கள் குறியீடு சோதனைச் சேவையகத்தில் கிடைக்காத பிற இணைய சேவையகங்களிலிருந்து தரவைக் கோருகிறது. அல்லது 50 முறை சோதிக்கப்பட வேண்டிய ஆன்லைன் பேமெண்ட்டுகளுக்கான குறியீட்டை எழுதுகிறீர்கள், அதன் பிறகுதான் உண்மையான நிதிச் சேனல்களில் பயன்படுத்த அனுமதிக்கப்படும்.

உங்களுக்குப் புரிந்திருக்கும் என்று நினைக்கிறேன்... மெய்நிகர் பொருள்கள் அல்லது அவை ஸ்டப் பொருள்கள் என்றும் அழைக்கப்படுவது மிகவும் பயனுள்ள விஷயம்.

இங்கே சிரமம் வருகிறது - ஜாவாவில் நிலையான தட்டச்சு உள்ளது. இதன் பொருள், ReadDatabaseஒரு பொருளின் குறிப்பை வகையின் பொருளுக்குப் பதிலாக மாறிக்கு ஒதுக்க , நீங்கள் இலிருந்து VirtualDatabaseவகுப்பைப் பெற வேண்டும் .VirtualDatabaseRealDatabase

பிற உண்மையான பொருள்களைப் பற்றிய குறிப்புகளைச் சேமிக்கும் தனிப்பட்ட முறைகள் மற்றும் மாறிகள் வகுப்பில் உள்ளன RealDatabase, மேலும் இந்த வழியில் நீங்கள் ஒரு சாதாரண ஸ்டப்பை எழுத முடியாது. கோட்பாட்டில் இது நல்லது, ஆனால் நடைமுறையில் இது ஒரு முட்டுச்சந்தாகும்.

மற்றும் இங்கே மீட்பு வருகிறது ( நீங்கள்DynamicProxy இன்னும் விரிவாக படிக்க முடியும் ), இது ஜாவா 5 இல் மீண்டும் தோன்றியது. இது கம்பைலருக்கு எந்த புகாரும் இல்லாத மெய்நிகர் பொருட்களை உருவாக்க உங்களை அனுமதிக்கிறது.

இத்தகைய மெய்நிகர் பொருள்கள் மோக்ஸ் என்று அழைக்கப்படுகின்றன (மோக் - லேஅவுட் என்ற வார்த்தையிலிருந்து). Mockito நூலகத்தால் இந்த கேலிக்கூத்துகளுடன் கூடிய வேலையை முன்னெப்போதும் இல்லாத உயரத்திற்கு கொண்டு செல்ல முடிந்தது. எனவே, நூலகத்தின் பெயர்.

1.3 @ExtendWith சிறுகுறிப்பு

Mockito நூலகம் JUnit உடன் சிறப்பாக செயல்படுகிறது, இது அதன் நீட்டிப்பாக கூட கருதப்படுகிறது.

உங்கள் யூனிட் சோதனைகளில் Mockito நூலகத்தை இயக்க இரண்டு வழிகள் உள்ளன. முதல் வழி ஒரு சிறப்பு சிறுகுறிப்பைச் சேர்ப்பதாகும்:

@ExtendWith(MockitoExtension.class)
public class MockitoAnnotationTest {
    ...
}

இரண்டாவது வழி, முறையை அழைப்பதன் மூலம் அதன் வேலையை இயக்குவது openMocks():

public class MockitoAnnotationTest {
    @BeforeEach
    public void init() {
        MockitoAnnotations.openMocks(this);
   }
}

பெரும்பாலும், நீங்கள் முதல் விருப்பத்தைப் பார்ப்பீர்கள், ஆனால் சில சமயங்களில் இரண்டாவது ஒன்று இருப்பதை அறிவது பயனுள்ளதாக இருக்கும்.