ఈ కార్యక్రమం హిప్పోడ్రోమ్ యొక్క అనుకరణ
ప్రారంభించడానికి, మునుపటి ప్రాజెక్ట్లో వలె, రిపోజిటరీ నుండి మిమ్మల్ని మీరు ఫోర్క్గా చేసుకోండి: https://github.com/CodeGymCC/hippodrome , మరియు ఈ ఫోర్క్ను మీరే క్లోన్ చేయండి.
మీ పని పరీక్ష మరియు లాగింగ్ను జోడించడం.
అవసరమైన పరీక్షల జాబితా
కింది జాబితాలో, ప్రతి అంశాన్ని తప్పనిసరిగా ప్రత్యేక పరీక్ష పద్ధతిగా అమలు చేయాలి. పరీక్షా పద్ధతుల కోసం పేర్లతో వస్తున్నప్పుడు, సంక్షిప్తంగా ఉండటానికి ప్రయత్నించండి, కానీ అదే సమయంలో, వాటిలో సరిగ్గా ఏమి పరీక్షించబడుతుందో మీరు సుమారుగా అర్థం చేసుకోవచ్చు. ఉదాహరణకు, ఈ రెండు పరీక్ష ఫలితాలను సరిపోల్చండి:

రెండవ సందర్భంలో, ఏ రకమైన పరీక్షలు ఉత్తీర్ణత సాధించలేదని అర్థం చేసుకోవడం చాలా కష్టం, మరియు మీరు లాగ్లను చూడవలసి ఉంటుంది.
1. గుర్రపు తరగతి:
- నిర్మాణకర్త
- మొదటి పారామీటర్గా కన్స్ట్రక్టర్కు పంపబడినప్పుడు
IllegalArgumentException
త్రోసివేయబడుతుందో లేదో తనిఖీ చేయండిnull
. దీన్ని చేయడానికి, పద్ధతిని ఉపయోగించండిassertThrows
; - కన్స్ట్రక్టర్కు మొదటి పారామీటర్గా పంపినప్పుడు
null
, విసిరిన మినహాయింపు "పేరు శూన్యం కాదు" అనే సందేశాన్ని కలిగి ఉందో లేదో తనిఖీ చేయండి. దీన్ని చేయడానికి, మీరు క్యాచ్ చేయబడిన మినహాయింపు నుండి సందేశాన్ని పొందాలి మరియుassertEquals
; - కన్స్ట్రక్టర్కి మొదటి పారామీటర్గా ఖాళీ స్ట్రింగ్ లేదా వైట్స్పేస్ అక్షరాలు (స్పేస్, ట్యాబ్, మొదలైనవి) మాత్రమే ఉన్న స్ట్రింగ్ను పాస్ చేసినప్పుడు, . విసిరివేయబడుతుందో లేదో తనిఖీ చేయండి
IllegalArgumentException
. వైట్స్పేస్ క్యారెక్టర్ల యొక్క విభిన్న వేరియంట్లతో పరీక్షించడానికి, మీరు పరీక్షను పారామీటర్గా మార్చాలి; - మొదటి పరామితిగా కన్స్ట్రక్టర్కి ఖాళీ స్ట్రింగ్ లేదా వైట్స్పేస్ అక్షరాలు (స్పేస్, ట్యాబ్ మొదలైనవి) మాత్రమే ఉన్న స్ట్రింగ్ను పాస్ చేస్తున్నప్పుడు, విసిరిన మినహాయింపు "పేరు ఖాళీగా ఉండకూడదు" అనే సందేశాన్ని కలిగి ఉందో లేదో తనిఖీ చేయండి;
- రెండవ పారామీటర్గా కన్స్ట్రక్టర్కు ప్రతికూల సంఖ్యను పంపినప్పుడు,
IllegalArgumentException
; - ప్రతికూల సంఖ్యను రెండవ పరామితిగా కన్స్ట్రక్టర్కు పంపినప్పుడు, విసిరిన మినహాయింపు "వేగం ప్రతికూలంగా ఉండకూడదు" అనే సందేశాన్ని కలిగి ఉంటుందని తనిఖీ చేయండి;
- మూడవ పారామీటర్గా కన్స్ట్రక్టర్కు ప్రతికూల సంఖ్యను పంపినప్పుడు,
IllegalArgumentException
; - కన్స్ట్రక్టర్కు ప్రతికూల సంఖ్యను మూడవ పారామీటర్గా పంపినప్పుడు, విసిరిన మినహాయింపు "దూరం ప్రతికూలంగా ఉండకూడదు" అనే సందేశాన్ని కలిగి ఉందో లేదో తనిఖీ చేయండి;
- getName పద్ధతి
- కన్స్ట్రక్టర్కు మొదటి పారామీటర్గా పంపబడిన స్ట్రింగ్ను పద్ధతి తిరిగి ఇస్తుందో లేదో తనిఖీ చేయండి;
- getSpeed పద్ధతి
- ఈ పద్ధతి కన్స్ట్రక్టర్కు రెండవ పారామీటర్గా పంపబడిన సంఖ్యను తిరిగి ఇస్తుందో లేదో తనిఖీ చేయండి;
- getDistance పద్ధతి
- ఈ పద్ధతి కన్స్ట్రక్టర్కు మూడవ పారామీటర్గా పంపబడిన సంఖ్యను తిరిగి ఇస్తుందో లేదో తనిఖీ చేయండి;
- ఆబ్జెక్ట్ రెండు పారామితులతో కన్స్ట్రక్టర్ని ఉపయోగించి సృష్టించబడితే, పద్ధతి సున్నాని తిరిగి ఇస్తుందో లేదో తనిఖీ చేయండి;
- తరలింపు పద్ధతి
- పద్దతి
getRandomDouble
0.2 మరియు 0.9 పారామితులతో పద్ధతి లోపల కాల్ చేస్తుందో లేదో తనిఖీ చేయండి.MockedStatic
దీన్ని చేయడానికి, మీరు దాని పద్ధతిని ఉపయోగించాలిverify
; - ఫార్ములా ద్వారా లెక్కించబడిన దూరం విలువను పద్ధతి కేటాయించిందో లేదో తనిఖీ చేయండి:
distance + speed * getRandomDouble(0.2, 0.9)
. దీన్ని చేయడానికి, మీరు దాన్ని లాక్ చేయాలి,getRandomDouble
తద్వారా పరీక్షను పారామితి చేయడం ద్వారా మీరు సెట్ చేయవలసిన నిర్దిష్ట విలువలను ఇది అందిస్తుంది.
2. హిప్పోడ్రోమ్ క్లాస్:
- కన్స్ట్రక్టర్
- కన్స్ట్రక్టర్కు పంపినప్పుడు
IllegalArgumentException
, విసిరివేయబడతాయో లేదో తనిఖీ చేయండిnull
; - కన్స్ట్రక్టర్కి పంపినప్పుడు
null
, విసిరిన మినహాయింపు "గుర్రాలు శూన్యంగా ఉండకూడదు" అనే సందేశాన్ని కలిగి ఉందో లేదో తనిఖీ చేయండి; - కన్స్ట్రక్టర్కు ఖాళీ జాబితాను పంపినప్పుడు, ; విసిరివేయబడుతుందో లేదో తనిఖీ చేయండి
IllegalArgumentException
; - కన్స్ట్రక్టర్కు ఖాళీ జాబితాను పంపుతున్నప్పుడు, విసిరిన మినహాయింపు "గుర్రాలు ఖాళీగా ఉండకూడదు" అనే సందేశాన్ని కలిగి ఉందో లేదో తనిఖీ చేయండి;
- getHorses పద్ధతి
- పద్ధతి అదే వస్తువులను కలిగి ఉన్న జాబితాను మరియు కన్స్ట్రక్టర్కు పంపబడిన జాబితా వలె అదే క్రమంలో తిరిగి ఇస్తుందో లేదో తనిఖీ చేయండి. హిప్పోడ్రోమ్ వస్తువును సృష్టించేటప్పుడు , 30 విభిన్న గుర్రాల జాబితాను కన్స్ట్రక్టర్కు పంపండి;
- తరలింపు పద్ధతి
- ఈ పద్ధతి అన్ని గుర్రాలపై తరలింపు పద్ధతిని పిలుస్తుందో లేదో తనిఖీ చేయండి. హిప్పోడ్రోమ్ ఆబ్జెక్ట్ను సృష్టించేటప్పుడు, 50 మాక్ హార్స్ల జాబితాను కన్స్ట్రక్టర్కు పంపండి మరియు
verify
. - గెట్ విన్నర్ పద్ధతి
- పద్ధతి గుర్రాన్ని అతిపెద్ద దూర విలువతో తిరిగి ఇస్తుందో లేదో తనిఖీ చేయండి.
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. గుర్రపు తరగతి:
- పేరుకు బదులుగా కన్స్ట్రక్టర్కు శూన్యత పంపబడితే, మినహాయింపును విసిరే ముందు, లాగ్కు ఇలా ఒక ఎంట్రీని జోడించండి:
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 అనుబంధాన్ని ఉపయోగించండి . ఈ సందర్భంలో, 7 రోజుల కంటే పాత ఫైల్లను తొలగించాలి. దీన్ని చేయడానికి, మీరు ఇలాంటి నిర్మాణాన్ని ఉపయోగించవచ్చు:
<DefaultRolloverStrategy>
<Delete …>
<IfFileName …/>
<IfLastModified …/>
</Delete>
</DefaultRolloverStrategy>
మూడు చుక్కలకు బదులుగా ఏది ప్రత్యామ్నాయం అని గూగుల్ చేసాడు.😊
ప్రాజెక్ట్ విశ్లేషణ . పూర్తయిన తర్వాత చూడండి!
GO TO FULL VERSION