Вызов метода stati c в тестовом классе (Junit) - PullRequest
0 голосов
/ 15 апреля 2020

Я пишу тестовые случаи junit для своего проекта, но столкнулся с одной проблемой. Вот метод, который я использую в одном из моих java классов (GraphNodes. java)

 public static ArrayList<String> getCSList() {
    System.out.println(CSList.size()); // Output : 3
    return CSList; // returns 3 elements in list
}

Теперь вот мой тестовый класс для Junit

@Test
public void checkCSListCount(){

 int actual= GraphNodes.getCSList().size(); // My exceptation here is 3 but in console it shows 0
 int excepted = 3;
 assertEquals(excepted,actual);  
 }

Мой junit терпит неудачу, говоря, что имеется исключение <3>, но фактическое <0> Также я не могу изменить метод stati c только на publi c, потому что он повлияет на некоторые функциональные возможности кода, и, поскольку я новичок в junit, у меня нет идеи, как это исправить. Кто-нибудь может мне помочь здесь Спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Вам необходимо проверить, как вы заполняете объект CSList() во время выполнения, и делать то же самое при выполнении теста.

Один из вариантов - включить в тест @BeforeEach method, в котором будут установлены значения того, что вам нужно во время теста.

    @BeforeEach
    public void setUp() {
       GraphNodes.setCSList(Arrays.asList("A","B","C"));
    }


   @Test
   public void checkCSListCount(){

      int actual= GraphNodes.getCSList().size();
      int excepted = 3;
      assertEquals(excepted,actual);  
  }
0 голосов
/ 15 апреля 2020

Я думаю, что вы пытаетесь написать интеграционный тест. Поэтому вам следует вызвать метод, который заполняет список вашими 3 элементами, прежде чем проверять размер списка. Если все логики c для этого находятся в вашем основном методе, вы должны извлечь его в свой собственный метод.

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