jUnit тест для метода addAll - PullRequest
       3

jUnit тест для метода addAll

2 голосов
/ 22 сентября 2011

Для моего задания мне нужно разработать несколько тестов jUnit для метода:

 addAll(int index, Collection c)

Этот метод является частью класса ArrayList - встроен в Java.

Я выяснил, как создавать тесты и запускать их в Eclipse IDE, но меня немного смущает, как именно я должен разрабатывать тесты. Могу ли я получить пример, включающий то, что я должен иметь в методе @before, @beforeClass, @after, @test?

Чтобы прояснить это, я понимаю формат методов ... Я просто не понимаю, КАК проверить этот метод.

http://download.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html#addAll(java.util.Collection)

Ответы [ 4 ]

4 голосов
/ 22 сентября 2011

Итак, вам нужно проверить, что метод вставляет все элементы в переданную коллекцию и вставляет их в соответствующую позицию в ArrayList.

Подумайте обо всех возможных senerios и протестируйте каждого.

  1. начать с пустого массива
  2. пройти пустую коллекцию
  3. используйте индекс 0
  4. использовать индекс> 0
  5. и т. Д., И т. Д. *

После добавления проверьте / подтвердите, что ArrayList теперь имеет все элементы, которые он должен иметь в правильном порядке / расположениях.

Также проверьте случаи ошибок с помощью @Test (ожидается = ...).

  1. индекс <0 </li>
  2. index> arrayList.size ()
  3. Нулевая коллекция
  4. придумать другие идеи

Также ... assertThat в сочетании с IsIterableContainedInOrder Hamcrest будет полезно для проверки.

3 голосов
/ 22 сентября 2011

Вам нужно будет подумать о поведении, которое вы хотите протестировать, а затем создать ряд методов, аннотированных @Test, для проверки аспектов этого поведения.Подумайте о том, как должен addAll вести себя.Например, если к нему передана коллекция с индексом 0, она должна добавить все эти элементы в индекс 0 ArrayList, а затем уже существующие объекты.Итак, в вашем тестовом методе создайте ArrayList, вставьте в него несколько объектов, создайте коллекцию (c), вставьте в нее несколько объектов, вызовите addAll для вашего arrayList с индексом 0 и collection (c) и подтвердите, что это сделаночто он должен был сделать ...

(это всего лишь пример, я не уверен, каково точное ожидаемое поведение addAll в вашем случае)

Еще лучше взглянуть настатья в википедии Вакимшаар опубликовал:)

2 голосов
/ 22 сентября 2011

Придерживайтесь методов @Test и @Before, остальное, вероятно, не то, что вам нужно.

Методы, аннотированные @Before, вызываются каждый раз перед выполнением метода, аннотированного @Test.Вы можете использовать его для инициализации содержимого в чистое состояние, которое может быть разделено между несколькими тестами.

Отправной точкой может быть следующий код (для большего количества случаев для проверки взгляните на ответ Джона) и реализуйте их самостоятельно.

public class ArrayListTest {

    public ArrayList<String> list;

    @Before
    public void before() {
        // This the place where everything should be done to ensure a clean and
        // consistent state of things to test
        list = new ArrayList<String>();
    }

    @Test
    public void testInsertIntoEmptyList() {
        // do an insert at index 0 an verify that the size of the list is 1
    }

    @Test
    public void testInsertIntoListWithMultipleItems() {
        list.addAll(Arrays.asList("first", "second"));
        list.addAll(1, Arrays.asList("afterFirst", "beforeSecond"));

        // Verify that the list now contains the following elements
        // "first", "afterFirst", "beforeSecond", "second"
        List<String> theCompleteList = // put the expected list here
        // Use Assert.assertEquals to ensure that list and theCompleteList are indeed the same
    }
}
1 голос
/ 22 сентября 2011

Используйте аннотацию @Test, чтобы отметить метод теста, который должен возвращать void и не принимать аргументы.

Для большинства случаев этого достаточно. Но если вы хотите запускать определенный код до или после каждого теста, используйте соответствующий метод и пометьте его аннотациями @Before и @After.

Если вам нужен код, который выполняется до или после контрольного примера (класс, в котором вы реализуете несколько тестов), аннотируйте соответствующие методы, используя методы @BeforeClass и @AfterClass. Обратите внимание, что эти методы должны быть статическими, поэтому метод «before» выполняется перед конструктором по умолчанию вашего тестового примера. Вы можете использовать этот факт, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...