c# - 如何在 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))] 带有红色下划线并且不起作用。
解决方案
推荐阅读
- python - 为什么 str 语句不能在 if....else 中使用
- php - sebdesign / laravel-state-machine 回调错误 - 期望参数 1 是有效的回调
- javascript - 外部依赖项在 Nav.svelte 中不起作用
- javascript - 如何使用函数从数组列表中使用单选按钮过滤/排序头发颜色
- python-3.x - 如何使用 Selenium 和 Python 从父 div 节点内的文本节点中提取文本 5
- c# - 在 TypeScript 中,哪个对象 HashSet 被反序列化了?
- sql - 是否可以在 PLSQL 中循环以根据变量从一个表中检索多个结果?
- c++ - 我有 int number 并且函数必须返回 double number
- oracle - Oracle PL/SQL 传递行类型作为构造函数参数
- python - Django 应用程序在我的系统上工作,但在 repl.it 上不工作