كيفية تعيين المتوقع استثناء باستخدام سكالا و JUnit 4

StackOverflow https://stackoverflow.com/questions/1052282

  •  20-08-2019
  •  | 
  •  

سؤال

أريد أن مجموعة المتوقع استثناء JUnit 4 اختبار باستخدام سكالا.أنا الحالي تفعل شيئا مشابها لما يلي:

@Test(expected=classOf[NullPointerException])
def someTest() = {
    // Some test code
}

ولكن أنا على خطأ برنامج التحويل البرمجي التالية:

error: wrong number of arguments for constructor Test: ()org.junit.Test
هل كانت مفيدة؟

المحلول

طريقة سكالا يتعامل مع سمات قليلا غير تقليدي.أعتقد أن ما كنت تحاول القيام به يجب أن يكون عن مثل هذا:

@Test { val expected = classOf[ NullPointerException] }
def someTest {
    // test code
}

نصائح أخرى

وهذا يتطلع قليلا، ولكن بناء الجملة من أجل الشروح في 2.8 تغيرت ليكون نفس ما نشرت أصلا. بناء الجملة تريستان نشر هو الصحيح في إصدار مستقر الحالي، لكنه أعطاني أخطاء عند ترقية أنا مشروعي إلى 2.8 مترجم ليلا. انا التخمين هذا يرجع إلى إدراج اسمه والوسائط الافتراضية . وهناك أيضا بعض المناقشات على سكالا القائمة البريدية. نقلا عن لوكاس Rytz:

<اقتباس فقرة>   

لاحظ أيضا أنه في 2.8.0 وبناء الجملة من أجل الشروح جافا لم يعد استخدام القيمة اسم   أزواج لكن الوسائط المسماة بدلا من ذلك، أي بمعنى.

@ann{ val x = 1, val y = 2}  ==>  @ann(x = 1, y = 2)

ويمكنك أيضا محاولة المواصفات باستخدام:

class mySpec extends SpecificationWithJUnit {
  "this expects an exception" in {
     myCode must throwA[NullPointerException]
  }
}

واريك.

استخدم ScalaTest وأداة JUnit معا، ويمكنك القيام به:

import org.scalatest.junit.JUnitSuite
import org.scalatest.junit.ShouldMatchersForJUnit
import org.junit.Test

class ExampleSuite extends JUnitSuite with ShouldMatchersForJUnit {

  @Test def toTest() {
    evaluating { "yo".charAt(-1) } should produce [StringIndexOutOfBoundsException]
  }
}

وهذا يعمل بالنسبة لي (أداة JUnit 4.10، سكالا 2.10.2):

@Test(expected = classOf[NullPointerException])
def testFoo() {
    foo(null)
}

وعلى غرار ما اقترح تريستان ، ولكن بناء الجملة هذا يجمع في الواقع ويعمل في مشروعي.

وتحرير: آه، وتبحث أقرب، وهذا هو بالضبط ما كان السؤال الأصلي. حسنا، أعتقد أن وجود أحدث جملة العامل أيضا في إجابات لا يضر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top