Я не помню, чтобы у Hamcrest было что-то для этой конкретной установки.
Я бы просто проверил один из наборов на размер и затем убедился бы, что сумма равна 6
Используя hamcrest -2.2.jar из hamcrest.org и JUnit4
это не удается в 3-м assertThat
, так как я намеренно создал его так, чтобы он потерпел неудачу с ожидаемым значением 5. Тест сообщает об отсутствии ошибок, когда установить на 6:
import static org.hamcrest.Matchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.Test;
import java.util.List;
import java.util.Set;
public class MyListTest {
@Test
public void listSize() {
MyList tester = new MyList();
List<Set<String>> result = tester.generate();
// assert statements
assertThat(result, hasSize(2)); // yours
assertThat(result.get(0), anyOf(hasSize(2), hasSize(4))); // is either 2 or 4
assertThat((result.get(0).size() + result.get(1).size()), equalTo(5)); // sum must be 6. FAILS with 5 :)
}
}
Проверенный класс:
import java.util.List;
import java.util.Set;
public class MyList {
public List<Set<String>> generate() {
Set<String> s1 = Set.of("Hello", "World");
Set<String> s2 = Set.of("Testing", "One", "Two", "Three");
return List.of(s1,s2);
}
}