【发布时间】:2020-05-08 06:09:36
【问题描述】:
我正在尝试复制一个场景,如果捕获到异常,代码应该重新运行一定次数。
using System;
using System.Threading;
public class Program
{
public static void Main()
{
MyClass myClass = new MyClass();
Console.WriteLine(myClass.MyMethod(5));
}
}
public class MyClass
{
public Test(){}
public string MyMethod(int tryCount) {
while(tryCount > 0)
{
// some logic that returns the switchType
// in this case i'm just manually setting it to 1
int switchType = 1;
try {
switch(switchType)
{
case 1:
return "it worked!!!";
case 2:
break;
}
} catch (Exception e){
if (--tryCount == 0) throw new Exception("Failed");
}
}
return null;
}
}
如何强制它进入 catch 块,以便我可以测试我的重试逻辑是否正常工作?
【问题讨论】:
-
不是真的,因为就我而言,为了测试,我想强制例外。
-
它可能是在产生
switchType的代码中,而不是你想捕捉的,不是吗? -
没有办法,简单的
switch和ints 会抛出异常......因此没有办法或理由来测试它。如果您有可能引发异常的东西(例如someClass.DoSomething())..那么您可以模拟该部分(例如someClassMock.Setup(mock => mock.DoSomething()).throws(new Exception())) -
@vc74 有道理,我会充实它以触发异常。除此之外是我的重试逻辑声音吗?
标签: c#