我是C#的初学者,我得到了这个错误的Argument 1: Cannot convert from 'string' to 'System.Action'
。老实说,我不知道如何解决这个问题。如果你能帮助我,请告诉我我应该在我的代码中添加什么来修复这个错误。我基本上是在写一个单元测试,它将测试代码是否正常工作(代码应该抛出一个异常)。这是我的代码:
单元测试项目文件:
[TestMethod]
public void ExceptionTest()
{
var test = new JumpingCode();
Assert.ThrowsException<ArgumentException>(test.EmptyValue(null));
}
类文件:
namespace Jumping
{
public class JumpingCode
{
public string EmptyValue(string some)
{
if (string.IsNullOrEmpty(some))
{
throw new ArgumentException("Name Cannot be null or empty");
}
return "Hello World";
}
}
}
我基本上是在测试一个随机投掷。单元测试文件是抛出错误消息的文件。错误消息在此行上,test.EmptyValue(null)
是带下划线的文本。老实说,我不知道问题出在哪里。我知道我做错了什么,但我就是不知道是什么。我不知道这是否会改变什么,但我以前从来没有为异常编写过单元测试。
发布于 2017-09-07 19:08:10
您正在将EmptyValue
(一个string
)的结果传递给Assert.ThrowsException
,但此方法需要验证一个Action
。
你必须改变这个
Assert.ThrowsException<ArgumentException>(test.EmptyValue(null));
通过这个
Assert.ThrowsException<ArgumentException>(() => test.EmptyValue(null));
发布于 2017-09-07 19:15:06
Assert.Throws返回抛出的异常,它允许您对异常进行断言
因此,如果没有抛出异常,或者抛出了错误类型的异常,则第一个断言抛出断言将失败。
但是如果抛出了正确类型的异常,那么您现在可以对保存在变量中的实际异常进行断言。
你必须这样写它
var ex = Assert.Throws<ArgumentNullException>(() => foo.Bar(null));
所以在你的情况下
var ext = Assert.ThrowsException<ArgumentException>(() =>test.EmptyValue(null));
https://stackoverflow.com/questions/46103454
复制相似问题