我应该使用什么断言 "Assert.DoesNotThrow...."?

What assert I should use instead "Assert.DoesNotThrow...."?

我正在学习一些有关单元测试的教程。问题是旧版本的 xUnit.net 提供了现在已删除的 "Assert.DoesNotThrow"。我应该用什么代替?
(在接下来的教程中使用了这个旧断言)

   [Fact]
    public void returns_json_response()
    {
        string results = execute("Batman");

        Assert.Throws.Nothing((new JavaScriptSerializer().Deserialize<dynamic>(results)));
    }

您可以使用 Record.Exception 方法检查异常,如下所示。

var exception = Record.Exception(() => new JavaScriptSerializer().Deserialize<dynamic>(results));
Assert.Null(exception);

您应该测试“result”的值,否则您测试的只是针对 JavascriptDeserializer。

如果你想在动态中包含序列化,那很好,但你应该这样做,例如;

var dynamicFoo = new JavaScriptSerializer( //etc

Assert.Equal("bar", dynamicFoo.Bar);

注意这里不是测试序列化,而是测试results字符串。您还可以测试实际的字符串值。