Освоение ASSERT_NE в gtest: утверждение неравенства в модульных тестах C++

Вы устали писать сложные условные операторы в модульных тестах 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++. Используя различные методы, вы можете легко обеспечить корректность своего кода. Так что вперед, внедряйте эти методы в свои наборы тестов и выведите модульное тестирование на новый уровень!