Я думаю, что Вы хотите сделать, создают связанный сервер согласно этот статья MSDN. Вы тогда выбрали бы использование 4 имен объекта части, например:
Select * From ServerName.DbName.SchemaName.TableName
Вы сравниваете ArrayList
с int
. Правильное сравнение:
...
assertThat(actual, hasItem(2));
- Изменить -
Извините, я неправильно прочитал. В любом случае, подпись hasItems
, которую вы хотите, следующая:
public static <T> org.hamcrest.Matcher<java.lang.Iterable<T>> hasItems(T... elements)
, т.е. она принимает переменное количество аргументов. Я не уверен, совместим ли ArrayList
, просто предполагаю. Попробуйте отправить каждый элемент из ожидаемого списка через запятую.
assertThat(actual, hasItems(2,4,1,5,6));
- Редактировать 2 -
Просто вставив сюда мой комментарий, есть эквивалентное выражение для того, что вы хотите, без использования Hamcrest:
assertTrue(actual.containsAll(expected));
Это сообщение об ошибке похоже на сообщение, созданное компилятором javac. В прошлом я обнаружил, что код, написанный с использованием hamcrest, просто не компилируется под javac. Тот же код будет хорошо компилироваться, скажем, с компилятором Eclipse.
Я думаю, что дженерики Hamcrest реализуют угловые случаи в дженериках, с которыми javac не может справиться.
Попробуйте
assertThat(actual, hasItems(expected.toArray(new Integer[0])));
удовлетворить подпись сопоставителя. Нет Eclipse, так что это может не сработать.
hasItems проверяет, что коллекция содержит некоторые элементы, а не то, что две коллекции равны, просто используйте для этого обычные утверждения равенства. Так что либо assertEquals (a, b), либо использование assertThat
import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;
ArrayList<Integer> actual = new ArrayList<Integer>();
ArrayList<Integer> expected = new ArrayList<Integer>();
actual.add(1);
expected.add(2);
assertThat(actual, is(expected));
. В качестве альтернативы, используйте contains Matcher, который проверяет, что Iterable содержит элементы в определенном порядке
import static org.junit.Assert.assertThat;
import static org.hamcrest.Matchers.contains;
ArrayList<Integer> actual = new ArrayList<Integer>();
actual.add(1);
actual.add(2);
assertThat(actual, contains(1, 2)); // passes
assertThat(actual, contains(3, 4)); // fails
Если вас не волнует порядок, используйте containsInAnyOrder
.