小编Ste*_*fen的帖子

应该测试异常消息

有没有办法用shouldly测试异常消息?

一个例子:

public class MyException: Exception{
}
Run Code Online (Sandbox Code Playgroud)

要测试的方法:

public class ClassUnderTest
{
    public void DoSomething() 
    {
        throw new MyException("Message");
    }
}
Run Code Online (Sandbox Code Playgroud)

我通常会以这种方式测试它:

[TestMethod]
public void Test()
{
    try
    {
        new ClassUnderTest().DoSomething();
        Assert.Fail("Exception not thrown");
    } catch(MyException me)
    {
        Assert.AreEqual("Message", me.Message);
    }catch(Exception e)
       Assert.Fail("Wrong exception thrown");
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该现在可以测试是否抛出异常:

[TestMethod]
public void TestWithShouldly()
{
    Should.ThrowException<MyException>(() => new ClassUnderTest().DoSomething());
}
Run Code Online (Sandbox Code Playgroud)

但是我如何测试异常的消息呢?

c# exception-handling shouldly

31
推荐指数
1
解决办法
8276
查看次数

if子句中逻辑表达式中的值的顺序

if 1 | []
    disp('1 | []');
end

if [] | 1
    disp('[] | 1');
end
Run Code Online (Sandbox Code Playgroud)

结果1 | [].第一个if被执行.

怎么来这个行为?我认为两者都有相同的结果.

matlab

6
推荐指数
1
解决办法
66
查看次数

如何模拟函数返回void任务

我有一个功能

public Task DoSomethingAsync();
Run Code Online (Sandbox Code Playgroud)

我想为测试目的而嘲笑.

实现这种方法的返回值的正确方法是什么.如果它会返回Task<int>或什么,我会用Task.FromResult<int>(5);

我可以

public async void DoSomethingAsync()
{
//implementation
}
Run Code Online (Sandbox Code Playgroud)

然而,这缺乏await运算符,并且(至少与Resharper)将加下划线.

在这里返回任务的正确方法是什么?

c# asynchronous

6
推荐指数
1
解决办法
2224
查看次数

标签 统计

c# ×2

asynchronous ×1

exception-handling ×1

matlab ×1

shouldly ×1