இந்த திட்டம் ஒரு ஹிப்போட்ரோமின் சாயல்
தொடங்குவதற்கு, முந்தைய திட்டத்தில் இருந்ததைப் போலவே, களஞ்சியத்தில் இருந்து உங்களை ஒரு முட்கரண்டியை உருவாக்கவும்: https://github.com/CodeGymCC/hippodrome , மேலும் இந்த ஃபோர்க்கை நீங்களே குளோன் செய்யுங்கள்.
சோதனை மற்றும் பதிவுகளைச் சேர்ப்பதே உங்கள் பணி.
தேவையான சோதனைகளின் பட்டியல்
பின்வரும் பட்டியலில், ஒவ்வொரு உருப்படியும் ஒரு தனி சோதனை முறையாக செயல்படுத்தப்பட வேண்டும். சோதனை முறைகளுக்கான பெயர்களைக் கொண்டு வரும்போது, சுருக்கமாக இருக்க முயற்சி செய்யுங்கள், ஆனால் அதே நேரத்தில், அவற்றில் சரியாக என்ன சோதிக்கப்படுகிறது என்பதை நீங்கள் தோராயமாக புரிந்து கொள்ள முடியும். எடுத்துக்காட்டாக, இந்த இரண்டு சோதனை முடிவுகளை ஒப்பிடுக:
![](https://cdn.codegym.cc/images/article/bc2ad851-64bf-43e4-b235-5abb1be944a7/512.jpeg)
இரண்டாவது வழக்கில், எந்த வகையான சோதனைகள் தேர்ச்சி பெறவில்லை என்பதைப் புரிந்துகொள்வது மிகவும் கடினம், மேலும் நீங்கள் பதிவுகளைப் பார்க்க வேண்டும்.
1. குதிரை வகுப்பு:
- கட்டமைப்பாளர்
- முதல் அளவுருவாக கன்ஸ்ட்ரக்டருக்கு அனுப்பப்படும் போது
IllegalArgumentException
, எறியப்படும் என்பதைச் சரிபார்க்கவும்null
. இதைச் செய்ய, முறையைப் பயன்படுத்தவும்assertThrows
; - முதல் அளவுருவாக கன்ஸ்ட்ரக்டருக்கு அனுப்பப்படும் போது
null
, எறியப்பட்ட விதிவிலக்கு "பெயர் பூஜ்யமாக இருக்க முடியாது" என்ற செய்தியைக் கொண்டிருக்கும் என்பதைச் சரிபார்க்கவும். இதைச் செய்ய, நீங்கள் பிடிக்கப்பட்ட விதிவிலக்கிலிருந்து ஒரு செய்தியைப் பெற வேண்டும் மற்றும் பயன்படுத்தவும்assertEquals
; - கன்ஸ்ட்ரக்டருக்கு முதல் அளவுருவாக வெற்று சரம் அல்லது இடைவெளி எழுத்துக்கள் (ஸ்பேஸ், டேப், முதலியன) மட்டுமே உள்ள சரத்தை அனுப்பும் போது, . எறியப்படும் என்பதைச் சரிபார்க்கவும்
IllegalArgumentException
. இடைவெளி எழுத்துகளின் வெவ்வேறு மாறுபாடுகளுடன் சோதிக்க, நீங்கள் சோதனையை அளவுருவாக மாற்ற வேண்டும்; - கன்ஸ்ட்ரக்டருக்கு ஒரு வெற்று சரம் அல்லது இடைவெளி எழுத்துக்கள் (இடம், தாவல் போன்றவை) மட்டுமே உள்ள சரத்தை முதல் அளவுருவாக அனுப்பும் போது, எறியப்பட்ட விதிவிலக்கு "பெயர் காலியாக இருக்க முடியாது" என்ற செய்தியைக் கொண்டிருக்கும் என்பதைச் சரிபார்க்கவும்;
- கன்ஸ்ட்ரக்டருக்கு ஒரு எதிர்மறை எண் இரண்டாவது அளவுருவாக அனுப்பப்படும் போது,
IllegalArgumentException
; - ஒரு எதிர்மறை எண் இரண்டாவது அளவுருவாக கன்ஸ்ட்ரக்டருக்கு அனுப்பப்படும் போது, வீசப்பட்ட விதிவிலக்கு "வேகம் எதிர்மறையாக இருக்க முடியாது" என்ற செய்தியைக் கொண்டிருக்கும் என்பதைச் சரிபார்க்கவும்;
- மூன்றாவது அளவுருவாக ஒரு எதிர்மறை எண் கட்டமைப்பாளருக்கு அனுப்பப்படும் போது,
IllegalArgumentException
; - மூன்றாவது அளவுருவாக எதிர்மறை எண்ணை கன்ஸ்ட்ரக்டருக்கு அனுப்பும்போது, எறியப்பட்ட விதிவிலக்கு "தொலைவு எதிர்மறையாக இருக்க முடியாது" என்ற செய்தியைக் கொண்டிருக்கும் என்பதைச் சரிபார்க்கவும்;
- getName முறை
- கட்டமைப்பாளருக்கு முதல் அளவுருவாக அனுப்பப்பட்ட சரத்தை முறை திரும்பப் பெறுகிறதா என்று சரிபார்க்கவும்;
- getSpeed முறை
- முறையானது இரண்டாவது அளவுருவாக அனுப்பப்பட்ட எண்ணை கன்ஸ்ட்ரக்டருக்குத் தருகிறதா என்பதைச் சரிபார்க்கவும்;
- getDistance முறை
- முறையானது மூன்றாவது அளவுருவாக அனுப்பப்பட்ட எண்ணை கன்ஸ்ட்ரக்டருக்குத் தருகிறதா என்பதைச் சரிபார்க்கவும்;
- இரண்டு அளவுருக்கள் கொண்ட ஒரு கட்டமைப்பாளரைப் பயன்படுத்தி பொருள் உருவாக்கப்பட்டிருந்தால், முறை பூஜ்ஜியத்தைத் தருகிறதா என்பதைச் சரிபார்க்கவும்;
- நகர்த்தும் முறை
- 0.2 மற்றும் 0.9 அளவுருக்கள் மூலம் முறை உள்ளே அழைக்கப்படுகிறதா என்பதைச் சரிபார்க்கவும்
getRandomDouble
. இதைச் செய்ய, நீங்கள்MockedStatic
அதன் முறையைப் பயன்படுத்த வேண்டும்verify
; - சூத்திரத்தால் கணக்கிடப்பட்ட தூர மதிப்பை முறை ஒதுக்குகிறதா என்பதைச் சரிபார்க்கவும்:
distance + speed * getRandomDouble(0.2, 0.9)
. இதைச் செய்ய, நீங்கள் அதை பூட்ட வேண்டும்,getRandomDouble
இதனால் சோதனையின் அளவுருவை நீங்கள் அமைக்க வேண்டிய சில மதிப்புகளை இது வழங்கும்.
2. ஹிப்போட்ரோம் வகுப்பு:
- கன்ஸ்ட்ரக்டர்
- கன்ஸ்ட்ரக்டருக்கு அனுப்பும்போது
IllegalArgumentException
, எறியப்படும் என்பதைச் சரிபார்க்கவும்null
; - கன்ஸ்ட்ரக்டருக்கு அனுப்பப்படும் போது
null
, எறியப்பட்ட விதிவிலக்கு "குதிரைகள் பூஜ்யமாக இருக்க முடியாது" என்ற செய்தியைக் கொண்டிருக்கும் என்பதைச் சரிபார்க்கவும்; - கன்ஸ்ட்ரக்டருக்கு வெற்றுப் பட்டியலை அனுப்பும்போது, எறியப்படும் என்பதைச் சரிபார்க்கவும்
IllegalArgumentException
; - ஒரு வெற்று பட்டியலை கன்ஸ்ட்ரக்டருக்கு அனுப்பும்போது, எறியப்பட்ட விதிவிலக்கு "குதிரைகள் காலியாக இருக்க முடியாது" என்ற செய்தியைக் கொண்டிருக்கும் என்பதைச் சரிபார்க்கவும்;
- getHorses முறை
- இந்த முறை அதே பொருள்களைக் கொண்ட பட்டியலையும், கட்டமைப்பாளருக்கு அனுப்பப்பட்ட பட்டியலின் அதே வரிசையில் தருவதையும் சரிபார்க்கவும். ஹிப்போட்ரோம் பொருளை உருவாக்கும் போது , 30 வெவ்வேறு குதிரைகளின் பட்டியலை கட்டமைப்பாளருக்கு அனுப்பவும்;
- நகர்த்தும் முறை
- இந்த முறை அனைத்து குதிரைகளிலும் நகரும் முறையை அழைக்கிறதா என சரிபார்க்கவும். ஹிப்போட்ரோம் பொருளை உருவாக்கும் போது, 50 போலி குதிரைகளின் பட்டியலை கட்டமைப்பாளருக்கு அனுப்பவும்
verify
. - getWinner முறை
- இந்த முறையானது குதிரையை மிகப்பெரிய தூர மதிப்புடன் திருப்பித் தருகிறதா என்பதைச் சரிபார்க்கவும்.
3. முதன்மை வகுப்பு
- முக்கிய முறை
- இந்த முறை 22 வினாடிகளுக்கு மேல் இல்லை என்பதைச் சரிபார்க்கவும். இதைச் செய்ய, டைம்அவுட் சிறுகுறிப்பைப் பயன்படுத்தவும். இந்தத் தேர்வை எழுதிய பிறகு, அதை முடக்கவும் (முடக்கப்பட்ட சிறுகுறிப்பைப் பயன்படுத்தவும்). எனவே அனைத்து சோதனைகளையும் இயக்க நேரம் எடுக்காது, தேவைப்பட்டால், அதை கைமுறையாக இயக்கலாம்.
என்ன பதிவு செய்ய வேண்டும்
1. முதன்மை வகுப்பு:
- ஹிப்போட்ரோம் பொருளை உருவாக்கிய பிறகு, பதிவில் இது போன்ற ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
- வெற்றியாளர்களைப் பற்றிய தகவலைக் காட்டிய பிறகு, பதிவில் இது போன்ற ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry
ஹிப்போட்ரோம் வகுப்பு:
- பூஜ்யமானது கட்டமைப்பாளருக்கு அனுப்பப்பட்டால், விதிவிலக்கை எறிவதற்கு முன், பதிவில் இது போன்ற ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
- பி. ஒரு வெற்று பட்டியல் கன்ஸ்ட்ரக்டருக்கு அனுப்பப்பட்டால், விதிவிலக்கை எறிவதற்கு முன், பதிவில் இது போன்ற ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
- கட்டமைப்பாளரின் முடிவில், பதிவில் இது போன்ற ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses
3. குதிரை வகுப்பு:
- ஒரு பெயருக்குப் பதிலாக null ஆனது கட்டமைப்பாளருக்கு அனுப்பப்பட்டால், விதிவிலக்கை எறிவதற்கு முன், பதிவில் ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:34:59,483 ERROR Horse: Name is null
- கன்ஸ்ட்ரக்டருக்கு அனுப்பப்பட்ட பெயர் காலியாக இருந்தால், விதிவிலக்கை எறிவதற்கு முன், பதிவில் இது போன்ற ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:36:44,196 ERROR Horse: Name is blank
- கன்ஸ்ட்ரக்டருக்கு அனுப்பப்பட்ட வேகம் பூஜ்ஜியத்தை விட குறைவாக இருந்தால், விதிவிலக்கை எறிவதற்கு முன், பதிவில் இது போன்ற ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
- கன்ஸ்ட்ரக்டருக்கு அனுப்பப்பட்ட தூரம் பூஜ்ஜியத்தை விட குறைவாக இருந்தால், விதிவிலக்கை வீசுவதற்கு முன், பதிவில் இது போன்ற ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
- கட்டமைப்பாளரின் முடிவில், பதிவில் இது போன்ற ஒரு உள்ளீட்டைச் சேர்க்கவும்:
2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]
பதிவுகள் hippodrome.log கோப்பில் எழுதப்பட வேண்டும் , இது பதிவுகள் கோப்புறையில் திட்ட மூலத்தில் இருக்க வேண்டும் . ஒவ்வொரு நாளும் கோப்பு hippodrome.2021-12-31.log வடிவத்தின்படி மறுபெயரிடப்பட வேண்டும் மற்றும் அதற்கு பதிலாக ஒரு புதிய hippodrome.log உருவாக்கப்பட வேண்டும் . இதைச் செய்ய, RollingFile appender ஐப் பயன்படுத்தவும் . இந்த வழக்கில், 7 நாட்களுக்கு மேல் பழைய கோப்புகளை நீக்க வேண்டும். இதைச் செய்ய, நீங்கள் ஒரு கட்டமைப்பைப் பயன்படுத்தலாம்:
<DefaultRolloverStrategy>
<Delete …>
<IfFileName …/>
<IfLastModified …/>
</Delete>
</DefaultRolloverStrategy>
மூன்று புள்ளிகளுக்குப் பதிலாக எதை மாற்றுவது என்று கூகுள் செய்தேன்.😊
திட்ட பகுப்பாய்வு . முடிந்த பிறகு பார்க்கவும்!