单元测试适配器引发异常:...未标记为可序列化

时间:2010-02-16 21:58:17

标签: c# unit-testing exception serialization

这个错误让我疯狂:

单元测试适配器抛出异常:在程序集'ZDRCreator中输入'com.imagehawk.ZDRCreator.Config.ZDRCreatorConfigException',Version = 1.0.5.1,Culture = neutral,PublicKeyToken = null'未标记为可序列化..

这是一个例外,它使用的唯一地方是这样抛出新的ZDRCreatorConfigException(bla);然后在捕捉区块当然。

刚刚开始发生......无法弄清楚我改变了什么。请帮忙

这是异常的代码,但我怀疑它有帮助。

public class ZDRCreatorConfigException : Exception
    {
        public ZDRCreatorConfigException(string msg) : base(msg)
        {
        }

        public ZDRCreatorConfigException() : base()
        {
        }
    }

更新:我想通了,毕竟不是微软的错;虽然我给他们发誓,但我确信还有很多其他值得的东西。我做了一个代码更改,导致抛出异常并且从未处理过。不确定为什么它提到serializable,除非因为并非所有构造函数都在这里实现。顺便说一句,我终于弄明白了在哪里找到了解决问题的断点。谢谢!

3 个答案:

答案 0 :(得分:1)

我不确定您是否有权访问源代码,但是您是否尝试过添加Serializable属性?

[Serializable]
public class ZDRCreatorConfigException : Exception
{
    ...
}

如果进行此更改,它将对您有所帮助,因为您将获得原始错误发生位置的堆栈跟踪,而不是序列化异常失败的堆栈跟踪。如果可能,您应该进行此更改,然后使用新的错误消息和stacktrace更新您的问题。

此外,你应该尝试弄清楚为什么抛出异常,因为我猜它不会发生。如果在调试模式下进行测试,则可以将Visual Studio设置为在抛出异常时自动中断,以便您可以看到发生的情况。

答案 1 :(得分:0)

您可能刚刚删除了Serializable属性:

    [Serializable]
    public class ZDRCreatorConfigException : Exception 
    { 
        public ZDRCreatorConfigException(string msg) : base(msg) 
        { 
        } 

        public ZDRCreatorConfigException() : base() 
        { 
        } 
    } 

答案 2 :(得分:0)

为了将来参考,每次我遇到这个都是因为基类没有标记为Serializable。