相关疑难解决方法(0)

C#:如何在单元测试中检查"没有发生异常"?

我正在为这个返回"void"的方法编写一个单元测试.我希望有一个案例,当没有异常抛出时,测试通过.我如何用C#编写?

Assert.IsTrue(????)
Run Code Online (Sandbox Code Playgroud)

(我猜这是我应该检查的,但是什么进入"???")

我希望我的问题很清楚.

c# unit-testing mstest exception

75
推荐指数
4
解决办法
5万
查看次数

我应该测试那些方法不会抛出异常吗?

我正在进行单元测试的第一步,并编写了(以及其他)这两种方法:

    [TestCase]
    public void InsertionSortedSet_AddValues_NoException()
    {
        var test = new InsertionSortedSet<int>();

        test.Add(5);
        test.Add(2);
        test.Add(7);
        test.Add(4);
        test.Add(9);
    }

    [TestCase]
    public void InsertionSortedSet_AddValues_CorrectCount()
    {
        var test = new InsertionSortedSet<int>();

        test.Add(5);
        test.Add(2);
        test.Add(7);
        test.Add(4);
        test.Add(9);

        Assert.IsTrue(test.Count == 5);
    }
Run Code Online (Sandbox Code Playgroud)

NoException真的需要这种方法吗?如果要抛出异常,它也将被抛出CorrectCount.

我倾向于将它保留为2个测试用例(可能将重复的代码重构为另一种方法),因为测试应该只测试单个事物,但也许我的解释是错误的.

c# nunit unit-testing

18
推荐指数
2
解决办法
853
查看次数

如何测试函数是否不抛出异常?

我有这个功能和测试:

public void SaveForWeb ()
{
    UpdateGameState();
    try
    {
        PlayerPrefs.SetFloat(Helper.EXP_KEY, experience);
        PlayerPrefs.SetFloat(Helper.SCORE_KEY, score);
        // other properties that need to be saved in PlayerPrefs

        PlayerPrefs.Save();
    }
    catch (Exception ex)
    {
        Debug.Log(ex.Message);
    }
}

[Test]
[Category(Helper.TEST_CATEGORY_SAVE_FOR_WEB)]
public void SaveForWebTest ()
{
    // arrange
    var slgdController = FakeSaveLoadGameDataController();
    TestDelegate myDelegate = () => {};

    // act
    slgdController.SaveForWeb();

    // assert
    Assert.DoesNotThrow(myDelegate);
}
Run Code Online (Sandbox Code Playgroud)

但我觉得断言和SaveForWeb()函数调用之间没有联系.

注意:SaveForWeb()使用Unity3D API中的PlayerPrefs,如果本地文件超过1 MB,则可能抛出PlayerPrefsException.

如果函数不抛出异常,这是断言的正确方法吗?

c# nunit unit-testing exception nsubstitute

0
推荐指数
2
解决办法
4102
查看次数

标签 统计

c# ×3

unit-testing ×3

exception ×2

nunit ×2

mstest ×1

nsubstitute ×1