Вы устали писать сложные условные операторы в модульных тестах C++ для проверки неравенства? Не смотрите дальше! В этой статье мы углубимся в один из мощных макросов утверждений, предоставляемых платформой Google Test (gtest): ASSERT_NE. Мы рассмотрим различные методы использования ASSERT_NE и предоставим вам практические примеры кода, которые вы сможете сразу же применить в своих наборах тестов.
Макрос ASSERT_NE, сокращение от «assert не равно», используется для проверки того, что два значения не равны в тестовом примере. Это важный инструмент для проверки неравенства между фактическими и ожидаемыми значениями. Давайте углубимся в некоторые методы эффективного использования ASSERT_NE:
Метод 1: базовое использование
#include <gtest/gtest.h>
TEST(MyTestCase, BasicUsage) {
int actual = 10;
int expected = 20;
ASSERT_NE(actual, expected);
}
Метод 2: сравнение чисел с плавающей запятой
#include <gtest/gtest.h>
TEST(MyTestCase, FloatingPointComparison) {
double actual = 3.14;
double expected = 2.718;
double epsilon = 0.001; // Tolerance for floating-point comparison
ASSERT_NE(actual, expected); // Exact comparison
ASSERT_NEAR(actual, expected, epsilon); // Comparison with tolerance
}
Метод 3: сравнение строк
#include <gtest/gtest.h>
#include <string>
TEST(MyTestCase, StringComparison) {
std::string actual = "Hello";
std::string expected = "World";
ASSERT_NE(actual, expected);
}
Метод 4. Пользовательские объекты
#include <gtest/gtest.h>
class MyClass {
public:
int value;
MyClass(int val) : value(val) {}
bool operator!=(const MyClass& other) const {
return value != other.value;
}
};
TEST(MyTestCase, CustomObjectComparison) {
MyClass actual(42);
MyClass expected(100);
ASSERT_NE(actual, expected);
}
Метод 5: сравнение указателей
#include <gtest/gtest.h>
TEST(MyTestCase, PointerComparison) {
int* actual = new int(10);
int* expected = new int(20);
ASSERT_NE(actual, expected);
delete actual;
delete expected;
}
Благодаря этим примерам у вас теперь есть целый ряд методов подтверждения неравенства с использованием ASSERT_NE в ваших модульных тестах. Не забудьте выбрать подходящий метод в зависимости от типа сравниваемых данных.
В заключение, ASSERT_NE — это ценный макрос утверждения, предоставляемый платформой gtest для проверки неравенства в модульных тестах C++. Используя различные методы, вы можете легко обеспечить корректность своего кода. Так что вперед, внедряйте эти методы в свои наборы тестов и выведите модульное тестирование на новый уровень!