الكلمة الأساسية فارغة
يشرح هذا القسم كيفية إعلان واستدعاء طريقة باطلة.
يوضح المثال التالي طريقة باسم printGrade ويستدعيها لطباعة الدرجة المحددة.
مثال
public class TestVoidMethod { public static void main(String[] args) { printGrade(78.5 } public static void printGrade(double Score) { if (score >= 90.0) { System.out.println('A' }); else if (score >= 80.0) { System.out.println('B' } else if (score >= 70.0) { System.out.println('C'); } else if (score >= 60.0) { System.out.println('D'); }}
نتائج التجميع والتشغيل للمثال أعلاه هي كما يلي:
ج
طريقة printGrade هنا هي طريقة كتابة فارغة ولا تُرجع قيمة.
يجب أن يكون استدعاء أسلوب باطلة عبارة. لذلك، يتم استدعاؤه كعبارة في السطر الثالث من الطريقة الرئيسية. تمامًا مثل أي عبارة تنتهي بفاصلة منقوطة.
طريقة واحدة لاختبار نوع الفراغ
ستحتوي طبقة الخدمة في Java على العديد من أساليب الكتابة الفارغة، مثل الحفظ* والتحديث*. تقوم هذه الطرق ببعض التحديثات فقط ولن تحتوي على قيمة إرجاع. لا يمكن كتابة اختبار واحد بناءً على القيمة المرجعة للطريقة استخدم طرقًا خاصة فقط.
البيئة المناسبة لهذه الطريقة: Mockito, testng
الطرق التي تم اختبارها:
طريقة VOID التي تريد اختبارها
@Override public void updateRuleName(Long RuleId, String newRuleName, Long ucId) { Assert.notNull(ruleId, "لا يمكن أن يكون معرف القاعدة فارغًا"); Assert.notNull(newRuleName, "لا يمكن أن يكون اسم القاعدة فارغًا"); notNull( ucId, "لا يمكن أن يكون UCID الخاص بالمشغل خاليًا"); String cleanNewRuleName = StringUtils.trim(newRuleName); if (StringUtils.isBlank(cleanNewRuleName)) { throw new IllegalArgumentException("لا يمكن أن يكون اسم القاعدة الجديدة فارغًا"); // كائن قاعدة الاستعلام Rule Rule = queryRuleById(ruleId); = القاعدة) { طرح IllegalDataException جديد ("لم يتم العثور على القاعدة" })؛ Rule.setRuleId(ruleId); Rule.setRuleName(cleanNewRuleName);
طريقة الاختبار:
اختبار طريقة العودة الفارغة
@Test public void testUpdateRuleName() { Long RuleId = 1L; String newRuleName = "newRuleName"; ((بايت) DBValueSetting.RULE_STATUS_TAKE_EFFECT); كائن قاعدة الاستعلام Map<String, Object> params = new HashMap<String, Object>(); params.put("ruleId", RuleId); .doAnswer(new Answer<Object>() { public Object Answer(InvocationOnMock invocation) { // نقطة التوقف 2: قاعدة القاعدة = (Rule) invocation.getArguments()[0]; Assert.assertTrue(rule.getRuleName().equals("newRuleName")); Mockito.any(Rule.class)); // نقطة التوقف 1: التنفيذ هنا أولاً baseService.updateRuleName(ruleId, newRuleName, ucId });
كما هو موضح في التعليقات، إذا تمت إضافة نقطتي توقف، فسيتم تنفيذ سطر الاتصال الأخير أولاً أثناء التنفيذ. أثناء تنفيذ نقطة النهاية 1، سيتم تنفيذ كعب نقطة النهاية 2. في هذا الوقت، يمكن الحصول عليه عند نقطة التوقف 2 انتقل إلى معلمات الإدخال لتنفيذ الطريقة وقم بإجراء التحقق المؤكد على معلمات الإدخال لتحقيق الغرض.
Anwer الجديد عبارة عن واجهة ذات أسلوب واحد فقط، تُستخدم لتعيين إدخال تنفيذ الوكيل لاستدعاءات الأسلوب.
تنفيذ doAnswer
public الواجهة Answer<T> { /** * @param استدعاء الاستدعاء على النموذج * * @return القيمة المراد إرجاعها * * @throws Throwable الذي سيتم طرحه */ T Answer(InvocationOnMock invocation) throws Throwable; }
عند تنفيذ التعليمات البرمجية على "ruleDao.updateSelective(rule);"، سيتم تشغيل المعترض الذي تم استدعاؤه للكائن الوهمي، وسيتم إنشاء وكيل ديناميكي في المعترض إجابة؛
باستخدام طرق الاعتراض والوكيل، يتم تحقيق الإعداد والحصول على معلمات الإدخال والإخراج لأسلوب الكائن الوهمي. باستخدام هذه الطريقة، يمكن التحقق من استدعاء فئة التنفيذ داخل طريقة VOID.