Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Управление зависимостями В модульных тестах

Лекция



Привет, Вы узнаете о том , что такое управление зависимостями в модульных тестах, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое управление зависимостями в модульных тестах , настоятельно рекомендую прочитать все из категории Разработка программного обеспечения и информационных систем.

Управление зависимостями В модульных тестах

Управление зависимостями

●           На практике случаи хорошо изолированного кода  довольно редки

Виды зависимостей

●           Injecting dependencies (respecting DI)

class A{   B b;

  public setB(B b) {this.b = b;}

...

}

Compiled dependencies (for instance referencies Filesystem API)

class A{

   public void methodToTest(){

    ...

    InputFile inStream = new InputFileStream("input.txt");

    ...

    inStream.read(buffer);

    ...

  }

}

 

Управление зависимостями («Плохой пример»)

class A{
private B bInstance;
public setB(B bInstance){
this.bInstance = bInstance;
}
public int myMethod(int number){
...
bInstance.doSomething(1,2);
...
return number;
}
}
class B{
public void doSomething(){
...
}
}

 

 

class MyATest extends TestCase{
@Test
public void testWithSImpleInput(){
// initialization
A a = new A();
B b = new B();
a.setB(b);
// execution
int actual = a.myMethod(4);
//verification
int expected = 2;
assertEquals(expected, actual);
}
}

 

Проблемы модульных тестов без устранения зависомостей
● Плавающие ошибки. Об этом говорит сайт https://intellect.icu . Трудность их нахождения. Потеря времени.
● Без устранения зависимостей модульные тесты являются де-факто интеграционными.

 

Управление зависимостями

●           Для успешного модульного тестирования необходимо все зависимости «устранить». Иначе потенциальные дефекты в зависимостях могут повлиять на успех тестов и усложнить поиск дефектов.

●           Устранение заключается в том, что все зависимые объекты заменяются «фейковыми» которые ведут себя именно так как ожидаете вы.

●           Mocks … replace a class with a small substitute (“mocks”) that implements the same interface.

●           Shims … modify the compiled code at run time, to inject and run a substitute (“shim”).

●           Необходимы эффективные средства для создания таких «фейковых» объектов на лету.

 

Управление зависимостями В модульных тестах

 

Mocking frameworks

Java      Управление зависимостями В модульных тестах

 

C#        Управление зависимостями В модульных тестах       Управление зависимостями В модульных тестах

 

 

Injecting dependencies

 

Управление зависимостями В модульных тестах

 

Управление зависимостями случай - Stubbing (корчеватели)

 

Управление зависимостями В модульных тестах

 

 

Управление зависимостями случай - Stubbing (AnyParameter)

Управление зависимостями В модульных тестах

 

Управление зависимостями случай - Verifying

Управление зависимостями В модульных тестах

 

Управление зависимостями случай — Invocation Counting

Управление зависимостями В модульных тестах

 

 

Управление зависимостями случай — Consecutive Calls

Управление зависимостями В модульных тестах

 

 

Управление зависимостями случай — Partial Mocking

Управление зависимостями В модульных тестах

 

Compiled dependencies

 

Как делать?
● Оберните в private  метод, который может быть легко переопределить от наследника или частично заменить (частичная насмешливый)
● Используйте прокладки и специальные структуры (PowerMock) взамена с поддельной код

 

Управление зависимостями Dummy
Dummy — объекты, которые передаются как
параметры но никогда не используются.
● Часто используются чтобы заполнить массив
тестовыми данными :
int[] k = {1, 2, 3};
...
● Или вызвать метод, где параметр требуется но не
имеет значения:
doSomething(123, new Integer(0));

 

Управление зависимостями Mocks

 

 

Mocks — объекты, которые перепрограммированы на ожидание того какие параметры они получат и что вернут
Mocks используется там где недостаточно Dummies, т. е. от объектов требуется поведение.
Mocks отражают концепцию «behavior verification».
● Mocks создаются декларативно через правила,как бы «нанизывая поведение друг на друга»

Управление зависимостями Stubs

Stubs — объекты-заглушки, очень похожи на Mocks, однако основное отличие состоит в том, что Stub создается недекларативно, используя
обычные примитивы языка. Stubs отражают концепцию «state verification».
● Во многих случаях Stubs могут быть реализованы через Mocks что являетсяпредпочтительным.

 

More Advices
Тестирование объектов в которых есть обращение к внешним устройствам, таким как БД или сеть (отправка emails, обмен данными).
● Решается как правило использованием Mocks или Fakes, в зависимости от сложности поведения.

 

 

 

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

Из статьи мы узнали кратко, но содержательно про управление зависимостями в модульных тестах
создано: 2016-01-18
обновлено: 2021-03-13
171



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Разработка программного обеспечения и информационных систем

Термины: Разработка программного обеспечения и информационных систем