首页 > 解决方案 > 如何在 XUnit 中测试以对象为参数的函数?

问题描述

我有一个简单的函数,它获取客户和供应商数据,然后根据他们的居住地和其他信息计算税收:

static int CountTax(Supplier tiek, Client kl, bool same_country)
{
    if ( !tiek.is_PVM_payer)
        return 0;
    else
    {
        if (!kl.EU)
            return 0;
        else
        {
            if (same_country)
                return kl.x;
            else
            {
                if (kl.is_PVM_payer)
                    return 0;
                else
                    return kl.x;
            }
        }
    }
}

现在我需要为此功能编写测试。这是我第一次遇到考验。我正在使用 XUnit 测试。我的测试类如下所示:

using System;
using Xunit;

namespace CountTax_tests
{
    public class UnitTest1
    {

        [Theory]
        [InlineData(typeof(Client))]
        public void Tax_is_0()
        {
            // arrange
            int expectedVal = 0;
            int actualVal;

            /// act
            actualVal = MyProgram.MyprogramCode.CountTax(supplier, client, same_country);

            // assert
            Assert.Equal(expectedVal, actualVal);
        }

        [Fact]
        public void PVM_is_x()
        {
            int expectedVal = x;
            int actualVal;

            actualVal = MyProgram.MyprogramCode.CountTax(supplier, client, same_country);
            Assert.Equal(expectedVal, actualVal);

        }
    }
}

但是如何将我的 Client 和 Supplier 参数传递给该测试?请帮助我并引领一条道路,因为我是全新的,即使经过许多教程,我也不清楚......也许我必须使用[理论]?或者也许[事实]?或者也许不可能将类作为参数传递?此外,[InlineData(typeof(Client))] 带有红色下划线并且不起作用。

标签: c#unit-testingtestingxunit.net

解决方案


推荐阅读