2016-03-22 11 views
1

ArrayList'teki nesnelerin özelliklerini doğrulamak için asserThat kullanıyorum.Bir listedeki nesnelerin özellik değerini kontrol etmek için AssertThat nasıl kullanılır?

Kullanılamıyor Kullanılamaz Nesnelerin hiçbiri test edilmek üzere bir veri içeriyorsa ancak nasıl kullanılacağını belirleyemiyorum. Eğer nesnelerden sadece biri test edilecek veri içeriyorsa.

Örnek Kod:

public class dataNeeded { 
    String data; 
    String modifiedDate; 

    public String getData(){ 
     return data; 
    } 
    ...... 
} 

public ArrayList<dataNeeded> returnsNeededData(){ 
... 
} 

List<dataNeeded> dataToBeTested = returnsNeededData(); 
dataToBeTested.forEach(data->assertThat(data.getData(), not(equalTo("No")))); 

List<dataNeeded> dataToBeTested2 = returnsNeededData(); 
// I need to verify if one of the objects in this list has it's data as "No" 
dataToBeTested.forEach(data->assertThat(data.getData(), ???); 
+0

Listede .contains() yöntemini çağırabilir misiniz? Listedeki – JustinKSU

+0

.contains() yöntemi nesneleri kontrol eder, ancak listedeki nesnelerin özelliklerini denetlemez –

cevap

1

Aşağıdaki fonksiyonuyla List<String> eşlenebildiğinden tüm veri dizeleri

private List<String> mapToDataStrings(List<dataNeeded> neededData) { 
    return neededData.stream() 
      .map(dataNeeded -> dataNeeded.getData()) 
      .collect(toList()); 
} 

ayıklamak ve ardından everyItem/ hasItem kullanmak (Akışları Java 8 kullanır)

sonuç dizeleriyle ilgili iddialarda bulunmak için Matchers işlevini kullanın. everyItem ile
List<String> dataToBeTested = mapToDataStrings(returnsNeededData()); 
assertThat(dataToBeTested, everyItem(not("No"))); 

List<String> dataToBeTested2 = mapToDataStrings(returnsNeededData()); 
assertThat(dataToBeTested2, hasItem("No")); 

Eğer listedeki her eleman "Hayır" değildir ve hasItem değer "Hayır" ile listede en az bir eleman olduğunu iddia iddia edebilirsiniz.


Alternatif haritalama fonksiyonunu önlemek için feature matcher uygulayabilir.

İlgili konular