متعددة النتائج الصحيحة مع Hamcrest (هناك أو المنظر?)

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

  •  02-07-2019
  •  | 
  •  

سؤال

أنا جديدة نسبيا matchers.أنا اللعب حولها مع hamcrest في تركيبة مع JUnit وأنا كيندا مثل ذلك.

هل هناك طريقة, إلى أن أحد الخيارات المتعددة هو الصحيح ؟

شيء مثل

assertThat( result, is( either( 1, or( 2, or( 3 ) ) ) ) ) //does not work in hamcrest

طريقة أنا اختبار إرجاع عنصر واحد من مجموعة.القائمة قد تحتوي على عدة مرشحين.بلدي الحالي تنفيذ يعود الضربة الأولى, ولكن هذا ليس شرطا.أود testcase أن تنجح إذا كان أي من المرشحين المحتملين هو عاد.كيف يمكنك التعبير عن هذا في جافا ؟

(انا منفتح على hamcrest-البدائل)

هل كانت مفيدة؟

المحلول

assertThat(result, anyOf(equalTo(1), equalTo(2), equalTo(3)))

من Hamcrest التعليمي:

anyOf - مباريات إذا كان أي matchers مباراة دوائر قصيرة (مثل جافا ||)

انظر أيضا جافادوك.

وعلاوة على ذلك, يمكنك أن تكتب الخاصة بك المنظر, ما هو من السهل جدا القيام به.

نصائح أخرى

ماركوس هو الحق ، ولكن لديك عدة خيارات أخرى أيضا.أولا وقبل كل شيء ، هو إما/أو:

assertThat(result, either(is(1)).or(is(2)));

ولكن إذا كان لديك اثنين أو أكثر من البنود سوف تحصل على الأرجح غير عملي.بالإضافة typechecker غريب يحصل على مثل هذه الاشياء في بعض الأحيان.لقضيتك, هل يمكن أن تفعل:

assertThat(result, isOneOf(1, 2, 3))

أو إذا كان لديك بالفعل الخيارات في مجموعة/مجموعة:

assertThat(result, isIn(theCollection))

انظر أيضا جافادوك.

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