默认参数必须是测试类中的编译时常量

时间:2015-08-17 16:49:07

标签: c#

我有一个测试类,我希望能够将可选类传递给。在我的测试中,我在测试中定义了一个客户类

public class Customer
{
  public string id { get; set; }
  public string firstName { get; set; }
  ...
}

我还在测试类加载时初始化了一个这样的实例

public class TestClass
{
  public static string APIKEY = "myapikey";

  Customer dummyCustomer = new Customer() { ...};

这在我的测试中运作良好,所以我可以做到

[TestMethod]
public void IsAPIActive()
{ ...
  var response = _service.GetResponse(dummyCustomer)

但现在我希望能够从另一个测试中调用一个测试,并可选择将客户传递给该类

[TestMethod]
public int CanCreateCustomer(Customer customer = dummyCustomer)
{ ....
  return response.Customer.CustomerId;

为了让现有的测试能够接收默认的虚拟客户,但我的其他一些测试可以将不同的客户对象传递给它。

当我添加此默认客户时,我只收到一条消息:

Default parameter value for 'customer' must be a compile-time constant.

1 个答案:

答案 0 :(得分:1)

首先,问问自己,您希望通过测试实现?是否已经测试

然后,如果测试依赖于其他测试,那么你做错了什么,所以再想一想。测试应该隔离到其自己的上下文,依赖于其他测试。

但是,如果你有两个测试相同的代码片段,那么你应该将它提取给它自己的两个测试可以调用的函数。但请记住良好测试仅测试一个事物。