C#-将对象序列化为常量变量或直接在带有NUnit的测试用例中使用

C#-将对象序列化为常量变量或直接在带有NUnit的测试用例中使用,c#,nunit,C#,Nunit,当我试图将对象序列化为常量变量或在测试用例中使用序列化对象时,我遇到了一个问题 我尝试这样做: [TestCase(JsonConvert.SerializeObject(myObject), TestName = "Test Case Name")] public void Test(string someString) { do something... } public const string someString

当我试图将对象序列化为常量变量或在测试用例中使用序列化对象时,我遇到了一个问题

我尝试这样做:

    [TestCase(JsonConvert.SerializeObject(myObject), TestName = "Test Case Name")]
    public void Test(string someString)
    {
         do something...
    }
 public const string someString2 = JsonConvert.SerializeObject(myObject); 
但是,我得到一个错误,我只需要使用常量变量。 我需要这样的东西:

    [TestCase(JsonConvert.SerializeObject(myObject), TestName = "Test Case Name")]
    public void Test(string someString)
    {
         do something...
    }
 public const string someString2 = JsonConvert.SerializeObject(myObject); 
然后,我可以在测试用例中使用这个someString2

有什么办法解决吗


谢谢

JsonConvert.SerializeObject()从来都不是常量,它是一个运行时例程

常量表示在编译时已知。如果myObject本身从未更改,并且它又小又简单,那么您可以将json作为静态字符串传递到属性中,即

[TestCase(@"{""foo"": ""bar""}, TestName = "Test Case Name")]

或者,您可以将对象作为参数传递到方法中,并将JsonConvert.SerializeObject()作为第一条语句调用,然后以这种方式获取json。

in属性中只允许使用常量。如果希望在运行时计算某些内容,请切换到TestCaseSource属性,并让测试的输入由方法传递。