1

Тема: Unit-тест

Привіт, написав функцію для обчислення добутку, потрібно зробити unit-тест, але коли вводжу те, що виводить консоль, то тест видає що неправильно, я думаю це через те, що результат малий і дробовий, хтось може підсказати як зробити результ добрим?

Код тесту
#include "pch.h"
#include "CppUnitTest.h"
#include "../Lab_5.4/Lab_5.4.cpp"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{
    TEST_CLASS(UnitTest1)
    {
    public:
       
        TEST_METHOD(TestMethod1)
        {
            Assert::AreEqual(P1(1, 15, 1), 1.30124e-22);
        }
    };
}


Код функції

double P1(int k, int N,int i)
{

    if (i<=N)
    {
        return (sin(i) * sin(i) + cos(1 / i) * cos(1 / i)) / (i * i) * P1(k,N,i + 1);
    }
    else
    {
        return 1;
    }
}

2 Востаннє редагувалося ReAl (02.11.2021 21:37:32)

Re: Unit-тест

Перше, що нам казали про типи з рухомою комою (ммм... це був ще FORTRAN і 1980-ті роки, але з того часу з цими типами мало що змінилося) — не порівнювати їх на строгу рівність.
Вам потрібен інший метод:

Assert::AreEqual(
    double expected,
    double actual,
    double tolerance,
    const wchar_t* message = NULL,
    const __LineInfo* pLineInfo = NULL)

(вперше чую про CppUnitTest.h, але я в гуглі не забанений)

Подякували: koala, mamkin haker, Ostapko, Chemist-i4