【发布时间】:2016-06-16 17:21:11
【问题描述】:
我有这个功能并测试:
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);
}
但我觉得断言和SaveForWeb()函数的调用之间没有联系。
注意:SaveForWeb() 使用 Unity3D API 中的 PlayerPrefs,如果本地文件超过 1 MB,可能会抛出 PlayerPrefsException。
如果函数不抛出异常,这是断言的正确方法吗?
【问题讨论】:
-
你不需要断言一个函数在单元测试中不会抛出异常。默认情况下,如果在单元测试中抛出异常,则单元测试将由于意外异常而失败。
-
是的,它是重复的,但没关系,Unity3D 社区的某些人可能会觉得它很有用。
-
如果有用(并且可能是无辜的)重复没有错:p
标签: c# unit-testing exception nunit nsubstitute