Windows:
Linux:
Необходимо склонировать этот репозиторий. Этот шаг делается один раз. Затем нужно будет просто заходить в склонированную директорию unit_test_task
. Для этого понадобится командная строка.
git clone https://github.com/m-melgizin/unit_test_task
cd unit_test_task
git submodule update --init --recursive
Для примера мы будем считать, что задана следующая функция (у всех она своя, не надо копировать все отсюда 😀):
int sum(int a, int b)
{
return a + b;
}
Перейдите в файл task/task.hpp
. Здесь нужно создать объявление функции (это первая строка заданной функции и точка с запятой):
task/task.hpp
:
#ifndef TASK_HPP
#define TASK_HPP
#include "stdc++.h"
// описание функции
#endif // !TASK_HPP
должно превратиться в
task/task.hpp
:
#ifndef TASK_HPP
#define TASK_HPP
#include "stdc++.h"
int sum(int a, int b);
#endif // !TASK_HPP
Перейдите в файл task/task.cpp
. Здесь нужно создать описание функции (это сама функция):
task/task.cpp
:
#include "task.hpp"
// реализация функции
должно превратиться в
task/task.cpp
:
#include "task.hpp"
int sum(int a, int b)
{
return a + b;
}
В файле task_ut/TestCases.md
составляем тест-кейсы по заданной функции. Например
task_ut/TestCases.md
:
# Тест-кейсы
## 1. Sum 2 and 3 eq 5
Входные данные: `a = 2`; `b = 3`.
Ожидаемый резульат: `c = 5`.
## 2. Sum 2 and 3 neq 1337
Входные данные: `a = 2`; `b = 3`.
Ожидаемый резульат: `c != 1337`.
В файле task_ut/ut.cpp
реализуем unit-тесты. Каждый тест-кейс пишется в блоке
TEST(<название тест-кейса>)
{
<реализация тест-кейса>
}
ASSERT_EQ(expected, actual)
- макрос для утверждения, что два значения равны.
Этот макрос сравнивает ожидаемое и фактическое значения. Если они не равны, то выбрасывается исключение runtime_error
с соответствующим сообщением об ошибке.
expected
- ожидаемое значение.actual
- фактическое значение.
ASSERT_NE(expected, actual)
- макрос для утверждения, что два значения не равны.
Этот макрос сравнивает ожидаемое и фактическое значения. Если они равны, то выбрасывается исключение runtime_error
с соответствующим сообщением об ошибке.
expected
- ожидаемое значение.actual
- фактическое значение.
Например
task_ut/ut.cpp
:
#include <task.hpp>
#include "simple_ut/simple_ut.h"
TEST(/* test name */)
{
/* test case */
}
int main(int argc, char* argv[])
{
return run_all_tests();
}
должно превратиться в
#include <task.hpp>
#include "simple_ut/simple_ut.h"
// Тест-кейс "Sum 2 and 3 eq 5"
TEST(Sum_2_and_3_eq_5)
{
int c = sum(2, 3);
ASSERT_EQ(5, c);
}
// Тест-кейс "Sum 2 and 3 neq 1337"
TEST(Sum_2_and_3_neq_1337)
{
int c = sum(2, 3);
ASSERT_NE(1337, c);
}
int main(int argc, char* argv[])
{
return run_all_tests();
}
Для сборки и запуска проекта необходимо запустить заранее составленные скрипты из командной строки.
- Сборка
build.cmd
- Запуск
run.cmd
- Сборка
sh build.sh
- Запуск
sh run.sh