ඔබේ කේතය ටිකක් ප්රතිනිර්මාණය කිරීමට මම ඔබට යෝජනා කරමි. ඔබේ කේතය පරික්ෂා කිරීම සඳහා, පරාවර්තනය හෝ වෙනත් ආකාරයේ දේවල් භාවිතා කිරීම ගැන සිතීමට පටන් ගත් විට, ඔබේ කේතයේ යමක් වැරදී ඇත.
ඔබ විවිධ ආකාරයේ ගැටළු සඳහන් කළා. පුද්ගලික ක්ෂේත්ර වලින් පටන් ගනිමු. පෞද්ගලික ක්ෂේත්රයන් නම් මම නව ඉදිකිරීම්කරුවෙකු එකතු කර ඒ සඳහා ක්ෂේත්ර එන්නත් කරමි. මේ වෙනුවට:
public class ClassToTest {
private final String first = "first";
private final List<String> second = new ArrayList<>();
...
}
මම මෙය භාවිතා කර ඇත:
public class ClassToTest {
private final String first;
private final List<String> second;
public ClassToTest() {
this("first", new ArrayList<>());
}
public ClassToTest(final String first, final List<String> second) {
this.first = first;
this.second = second;
}
...
}
සමහර උරුම කේත සමඟ වුවද මෙය ගැටළුවක් නොවනු ඇත. පැරණි කේතය හිස් ඉදිකිරීම්කරුවෙකු භාවිතා කරනු ඇති අතර, ඔබ මගෙන් ඇසුවොත්, ප්රතිනිර්මාණය කරන ලද කේතය වඩා පිරිසිදු ලෙස පෙනෙනු ඇති අතර පරාවර්තනයකින් තොරව පරීක්ෂණයේදී අවශ්ය අගයන් එන්නත් කිරීමට ඔබට හැකි වේ.
දැන් පෞද්ගලික ක්රම ගැන. මගේ පෞද්ගලික අත්දැකීම් අනුව, ඔබට පරීක්ෂා කිරීම සඳහා පුද්ගලික ක්රමවේදයක් ඇනීමට සිදු වූ විට, එම ක්රමයට එම පන්තියේ කිසිදු සම්බන්ධයක් නැත. පොදු රටාවක් නම්, එය අතුරු මුහුණතක් තුළ ඔතා තැබීමයි , වැනි Callable
ඔබ පසුව එම අතුරුමුහුණතෙහි ඉදිකිරීම්කරු තුළ ද ගමන් කරයි (එම බහු ඉදිකිරීම් උපක්රමය සමඟ):
public ClassToTest() {
this(...);
}
public ClassToTest(final Callable<T> privateMethodLogic) {
this.privateMethodLogic = privateMethodLogic;
}
බොහෝ දුරට මා ලියා ඇති සියල්ල පෙනෙන්නේ එය යැපුම් එන්නත් රටාවක් ලෙස ය. මගේ පෞද්ගලික අත්දැකීම් වලදී එය පරීක්ෂා කිරීමේදී සැබවින්ම ප්රයෝජනවත් වන අතර, මම සිතන්නේ මේ ආකාරයේ කේත පිරිසිදු වන අතර එය නඩත්තු කිරීමට පහසු වනු ඇත. කැදැලි පංති ගැන මමත් එසේ කියමි. කැදැලි පන්තියක බර තර්කනයක් තිබේ නම්, ඔබ එය පැකේජයක් පුද්ගලික පංතියක් ලෙස ගෙන එය අවශ්ය පන්තියකට එන්නත් කර තිබීම හොඳය.
උරුම කේතය ප්රතිනිර්මාණය කිරීමේදී හා නඩත්තු කිරීමේදී මා භාවිතා කළ තවත් මෝස්තර රටා කිහිපයක් තිබේ, නමුත් ඒ සියල්ල රඳා පවතින්නේ පරීක්ෂා කිරීමට ඔබේ කේතයේ අවස්ථා මත ය. පරාවර්තනය භාවිතා කිරීම බොහෝ දුරට ගැටළුවක් නොවේ, නමුත් ඔබ ව්යවසාය යෙදුමක් ඇති විට එය දැඩි ලෙස පරීක්ෂා කර ඇති අතර සෑම යෙදවීමක්ම මන්දගාමී වීමට පෙර පරීක්ෂණ ක්රියාත්මක වේ (එය කරදරයක් වන අතර මම ඒ වගේ දේවල් වලට කැමති නැත).
සෙටර් එන්නත් ද ඇත, නමුත් මම එය භාවිතා කිරීම නිර්දේශ නොකරමි. මම ඉදිකිරීම්කරුවෙකු සමඟ රැඳී සිටිමින් සෑම දෙයක්ම සැබවින්ම අවශ්ය වූ විට ආරම්භ කර, අවශ්ය පරායත්තතාවයන් එන්නත් කිරීමේ හැකියාව අතහැර දමමි.