提问人:Ogier 提问时间:11/16/2023 最后编辑:Ogier 更新时间:11/16/2023 访问量:28
Mongo 自定义序列化程序在连续运行多个测试夹具时失败
Mongo custom serializer fails when running several test fixtures in a row
问:
我正在使用 Nunit 对使用 MongoDb 的项目进行单元测试。我需要一个自定义序列化程序来序列化我自己的命名空间中的对象。我已将此注册封装在静态函数中。我需要在测试的设置中使用此功能。如果我一个接一个地运行我的测试夹具,它就可以工作了。但是,如果我尝试运行它们,我会遇到以下异常:MongoDB.Bson.BsonSerializationException : There is already a serializer registered for type Object.
我使用带有驱动程序 v2.22 和 NUnit v2.6.4 的 MongoDb v5.0
下面是一些经过编辑的代码:
public static class MongoSerializerHelper
{
/// <summary>
/// Registers all types whose namespace starts with "MyNameSpace"
/// </summary>
public static void RegisterCustomTypesForSerializer()
{
var objectSerializer = new ObjectSerializer(type =>
{
var isTypePartOfNameSpace = type.FullName.StartsWith("MyNameSpace");
return ObjectSerializer.DefaultAllowedTypes(type) || isTypePartOfNameSpace;
});
BsonSerializer.RegisterSerializer(objectSerializer);
}
}
[TestFixture]
public class OneTestFixture
{
[TestFixtureSetUp]
public void SetUp()
{
MongoSerializerHelper.RegisterCustomTypesForSerializer();
}
//tests after that
}
问题似乎在于我的序列化程序注册了多次,但事实并非如此:如果我在同一次运行中运行多个测试夹具,从一个未注册序列化器的测试夹具开始,则第二个测试夹具将在第一次尝试注册时失败并出现相同的错误。
在项目的任何其他部分都没有注册序列化程序。此外,如果是这种情况,您将在错误消息中看到实际类型,而不是 .
我已经在线查找了错误消息,但我没有找到任何关于此错误的引用。Object
Object
答: 暂无答案
评论