2014-12-03 13 views
1

Предположим, что у меня есть класс ниже, простой класс, чтобы добавить три строки в String ArrayList с именем ar.Испытание Junit на ArrayList

public class Testcases { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 

} 

public ArrayList<String> myArray() { 
    ArrayList<String> ar = new ArrayList<String>(); 
    ar.add("Customer1"); 
    ar.add("Customer2"); 
    ar.add("Customer3"); 
    return(ar); 
} 
} 

Как я могу использовать тестирование Junit, чтобы убедиться, что строки действительно вошли в ArrayList?

Update

Мой TestcasesTest файл - где производится тестирование, выглядит следующим образом:

@Test 
public void testMain() { 
    System.out.println("main"); 
    String[] args = null; 
    Testcases.main(args); 
    // TODO review the generated test code and remove the default call to fail. 
    // fail("the test case is a resul in the prototype"); 
} 

/** 
* Test of add method, of class Testcases. 
*/ 
@Test 
public void testMyArray() { 
    assertEquals(Arrays.asList("Customer1", "Customer2", "Customer3"), myArray()); 
} 

} 
+0

Создайте массив, содержащийся в g значения для проверки, затем пройти каждое значение и проверить, что возвращаемый 'ArrayList' имеет одинаковую длину и значения этого массива. –

+0

Эй! Я добавил код в OP. Я создал новый массив 1D и заполнил его. Я просто не уверен, как сравнивать ArrayList и Array. –

ответ

2

Следующий код сделать:

@Test 
public void myArrayTest() { 
    TestCases testCases = new TestCases(); 
    List<String> result = testCases.myArray(); 
    Assert.assertNotNull("List shouldn't be null", result); 
    Assert.assertEquals("wrong size", 3, result.size()); 
    Assert.assertEquals("Wrong 1st element", "Customer1", result.get(0)); 
    Assert.assertEquals("Wrong 2nd element", "Customer2", result.get(1)); 
    Assert.assertEquals("Wrong 3rd element", "Customer3", result.get(2)); 
} 
+2

Мне нравится ответ janos лучше;) – realUser404

+1

Хорошее спортивное мастерство ;-) – janos

+0

Я получаю не могу найти класс символов TestCases, место TestCasesTes ". Интересно, почему это было бы. Класс с моим основным методом - Testcases (нижний регистр c), но даже после этого, я получаю ту же ошибку. –

3

Здесь вы идете:

public class Testcases { 
    public List<String> myArray() { 
     List<String> ar = new ArrayList<>(); 
     ar.add("Customer1"); 
     ar.add("Customer2"); 
     ar.add("Customer3"); 
     return ar; 
    } 
} 

class TestcasesTest { 
    @Test 
    public void testMyArray() { 
     Testcases testcases = new Testcases(); 
     assertEquals(Arrays.asList("Customer1", "Customer2", "Customer3"), testcases.myArray()); 
    } 
} 

Я сделал некоторые улучшения в вашем методе: типы интерфейсов

  • Используйте в типе возвращаемого значения и объявления переменных, когда это возможно. Поэтому я изменил ArrayList к List в типе возвращаемого значения и локальной переменной
  • Нет необходимости в круглые скобки в return(ar), это проще и естественно: return ar
+0

Хорошая практика - такой же класс? – realUser404

+0

Абсолютно нет, но его класс называется «Testcases», поэтому он выглядит так, как будто это его тестовый класс. Организация тестовых случаев здесь подозрительна, информации об этом недостаточно, поэтому я удобная пошаговая эта потенциальная проблема. – janos

+0

Я получаю сообщение об ошибке, не могу найти символ myArray() в файле TestcasesTest, вот где тестирование выполняется. Testcase, основной метод - все равно. Я добавил TestcasesTest в OP. –

0

Рассмотрите возможность использования Assert4J:

import static org.assertj.core.api.Assertions.assertThat; 
    @Test 
    public void test() { 
    final List<String> result = classUnderTest.someMethod(); 
    assertThat(result).containsExactly("Customer1", "Customer2", "Customer3"); 
    } 

You Сообщение об ошибках сообщения об ошибках будет таким образом:

java.lang.AssertionError: 
Expecting: 
<[5544, 8811, 9988]> 
to contain exactly (and in same order): 
<["Customer1", "Customer2", "Customer3"]> 
but some elements were not found: 
<["Customer1", "Customer2", "Customer3"]> 
and others were not expected: 
<[9988, 8811, 5544]> 
Смежные вопросы