как выполнить модульное тестирование блока кода, в котором есть вызов db и последующая строка в зависимости от вызова db - PullRequest
0 голосов
/ 28 апреля 2019

Как написать тест junit для проверки блока функции, который имеет вызов db, и последующих строк на основе результата вызова db? Любые образцы или пример ценится

Моя функция для проверки:

public String functionality(String input)
{
      String readDBValue = db.giveMeValue();

      if (input.contains(readDBValue))
      {
         return input;
      }
      else 
      {
        return null;
      }
    }

Мой тестовый пример Junit4:

public class JunitTest
{
    @Test
    public void  testFunctionality()
    {
        String inputTst = "new input";
        String expectTst = "new input";
        assertEquals(functionality(input), expectTst);
    }
}

Как проверить строку в функциональности, которая возвращает некоторое значение из базы данных из зависимой функции?

1 Ответ

1 голос
/ 28 апреля 2019

Можете ли вы смоделировать базу данных и внедрить ее в любой класс, который вы тестируете?

Использование двойного теста для некоторого описания базы данных ускорит ваши тесты и позволит вам определить поведение базы данных.звонки, чтобы вы могли проверить ветви в вашем коде.

Отредактировано 2019-04-28 18: 17: 00 + 13: 00: добавление примера кода для иллюстрации.

import static org.mockito.Mockito.*;
import static org.junit.Assert.*;

public class TestMyClass {

    @Test
    public void test1()  {
        // create mock
        MyDatabase mockDb = mock(MyDatabase.class);

        // set behaviour required in test
        when(mockDb.giveMeValue()).thenReturn("new input");

        // inject mock into object being tested
        MyClass objectUnderTest = new MyClass(mockDb);

        // use mock in test....
        assertEquals(objectUnderTest.functionality("input"), "new input");
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...