C# MSUnit断言不工作

C# MSUnit断言不工作,c#,unit-testing,C#,Unit Testing,除了我的Assert,MSUnit上的一切都在工作。我检查发现MSUnit中的Assert与nUnit有点不同。我浏览了一篇博客文章,做了完全相同的事情,但在调试测试时仍然出错 当我在单元测试中检查我的ex时(抛出错误后),我得到的消息是“应用程序中的错误”,由于预期的消息不同,因此测试失败 有什么想法吗 [TestMethod] [ExpectedException(typeof(InvalidAreaException))] public void GetAreaWithNe

除了我的Assert,MSUnit上的一切都在工作。我检查发现MSUnit中的Assert与nUnit有点不同。我浏览了一篇博客文章,做了完全相同的事情,但在调试测试时仍然出错

当我在单元测试中检查我的ex时(抛出错误后),我得到的消息是“应用程序中的错误”,由于预期的消息不同,因此测试失败

有什么想法吗

[TestMethod]
    [ExpectedException(typeof(InvalidAreaException))]
    public void GetAreaWithNegativeValueTest()
    {
        try
        {
            Utility.GetArea(2, -1, 2);

        }
        catch (InvalidAreaException ex)
        {
            Assert.AreEqual ("Inputs must be positive numbers", ex.Message);
            throw;
        }
    }

//Exception Class   
        public class InvalidAreaException : ApplicationException, ISerializable
    {
    public  string msg;

    public InvalidAreaException(string message)
    {
        //msg = message;
    }
 }

//Actual Method to be tested
public static double GetArea(int arg1, int arg2, int arg3)

    {
        double area = 0d;

        if ((arg1 < 0) || (arg2 < 0) || (arg3 < 0))
        {
            throw new InvalidAreaException("Inputs must be positive numbers");
        }   
    }
[TestMethod]
[预期例外(类型(无效例外))]
public void GetAreaWithNegativeValueTest()
{
尝试
{
公用设施区域(2,-1,2);
}
渔获物(无效)
{
Assert.AreEqual(“输入必须是正数”,例如Message);
投掷;
}
}
//例外类
公共类InvalidAreaException:ApplicationException,ISerializable
{
公共字符串msg;
公共InvalidAreaException(字符串消息)
{
//msg=消息;
}
}
//实际测试方法
公共静态双GetArea(int arg1、int arg2、int arg3)
{
双面积=0d;
如果((arg1<0)| |(arg2<0)| |(arg3<0))
{
抛出新的InvalidAreaException(“输入必须是正数”);
}   
}

将“残疾例外”的条件更改为:则您的考试将通过

    public class InvalidAreaException : ApplicationException, ISerializable
    {

        public InvalidAreaException(string message):base(message)
        {
        }
    }

您的断言是针对Message属性的,Message属性是基类的属性,您忘了填充此属性

您的GetArea方法没有返回语句,这甚至可以编译吗?它不称为MSUnit,称为MSTests framework,无论如何,请尝试从方法中删除try/catch:“GetAreaWithNegativeValueTest”因为你想让方法检测异常,对吗?我会检查你的单元测试。一个好的测试应该只有一条通过代码的路径(否则您可能会在测试本身中出现逻辑问题)。这样做可能会指向您的问题。粘贴代码时,我错过了return语句,感谢您指出,我正在使用下面的帖子,因为他们告诉我,在MsTests中,断言的测试方式不同。我需要在我的例外中写些什么吗Class@sam你忘了填充你的消息属性(见我的答案…),关于你的链接,我从2013年就认识lior friedman,他是他的领域的专家,我从未读过他的博客,但我相信,这是一个非常好的资源。。。所以我建议你读他的文章。如果您决定测试异常,还有一件事。在您的流程结束时执行此操作。关注我的方法应该做什么(例如计算面积),而不是“如果我通过……那么……”