2016-11-12 3 views
0

異なる数の要素を持つ2つのList of Stringsをアサートしようとしています。 私はアプリケーションをテストしています。私の目標は、実際のリストに期待されるリストと一致する要素が1つでも含まれている場合、テストケースを失敗させることです。異なるサイズの2つのリストに対してassertNotEqualsを使用する方法

私は以下のアプローチを試しましたが、これらのどれも私の必要条件を満たすものではありません。

List<String> expected = Arrays.asList("fee", "fi", "foe", "foo"); 
List<String> actual = Arrays.asList("feed", "fi"); 
assertThat(actual, not(equalTo(expected)));` 

実際のリストに期待されるものと一致する要素が1つあるので、この比較は失敗します。

Assert.assertNotEquals(actual,expected); 
assertThat(actual, is(not(expected))); 
Assert.assertNotEquals(actual, containsInAnyOrder(expected)); 

これらの作業はありません。どんな助けもありがとう。

+0

「実際のリストに期待されるリストに一致する要素が1つでも含まれている場合」を説明できますか? – Mitchapp

+0

要素の数が異なるかどうかを確認するには、actual.size()とexpected.size()を比較しますか? – chatton

+0

[Javaのセットには何かが含まれていますか?](http://stackoverflow.com/questions/8708542/something-like-contains-any-for-java-set) – Jaims

答えて

0
List<String> commonElement = findCommon(actual,expected);  
public List<String> findCommon(List<String> list1, List<String> list2) { 
     List<String> list = new ArrayList<String>(); 

     for (String t : list1) { 
      if(list2.contains(t)) { 
       list.add(t); 
      } 
     } 

     return list; 
    } 

Assert.assertTrue(commonElement.size() != 0); //This will fail when actual` 

リストには、期待されるリスト内の任意の要素が含まれ、その逆もあります。

0

私はあなたがこのような何かをしたいと思う:

List<String> expected = Arrays.asList("fee", "fi", "foe", "foo"); 
    List<String> actual = Arrays.asList("feed", "fi"); 

    assert(actual.size() != expected.size()); // Will fail if same number of elements 
    for(String s : actual){ 
     assert(!expected.contains(s)); // Fails if element in actual is in expected 
    } 
0

実際のリストの要素のいずれかが、次のように予想されるリスト内の任意の要素と一致した場合は、assertFalseを使用してこれを行うことができます。

@Test 
    public void test() throws Exception{ 
     List<String> expected = Arrays.asList("fee", "fi", "foe", "foo"); 
     List<String> actual = Arrays.asList("feed", "fi1"); 
     for(String temp : expected) { 
      if(!actual.stream().noneMatch((String s) -> s.equals(temp))) { 
       Assert.assertFalse(true); 
      } 
     } 
    } 
+0

私はOPが**実際の**要素が 'expected'に現れるかどうかを確認してください。これは2つの配列が完全に一致していることを比較します。 – Tim

+0

私はあなたのポイントを得ました、上記の答えを更新しました – developer

関連する問題