我尝试对protobuf-net配置进行单元测试,遗憾的是,事实证明(('A', 'd'), ('A', 'e'), ('B', 'd'), ('B', 'e'), ('C', 'd'), ('C', 'e'))
上没有Clear
方法(或类似方法)。
由于我在整个应用中使用了RuntimeTypeModel.Default
,因此我不想切换到RuntimeTypeModel.Default
。
有没有办法通过RuntimeTypeModel.Create()
方法重置/清除/删除添加到RuntimeTypeModel.Default
的类型?
答案 0 :(得分:0)
我遇到了与xUnit测试类似的问题。构造函数将为每个测试实例化,RuntimeTypeModel已经具有代理类型并且失败。解决方案是在xUnit中使用ClassFixture(我相信它是针对nUnit的TestFixture吗?)
using System;
using System.Collections.Generic;
using System.IO;
using NodaTime;
using ProtoBuf.Meta;
using Quantum.Serialisation;
using Quantum.Serialisation.Surrogates;
using Xunit;
namespace Quantum.SerialisationTests
{
public class TestFixture : IDisposable
{
private RuntimeTypeModel model;
public TestFixture()
{
RuntimeTypeModel.Create();
model = RuntimeTypeModel.Default;
model.Add(typeof (ZonedDateTimeSurrogate), true);
model.Add(typeof (ZonedDateTime), false).SetSurrogate(typeof (ZonedDateTimeSurrogate));
}
public void Dispose()
{
}
}
public class ProtobufTests : IClassFixture<TestFixture>
{
public ProtobufTests()
{
}
// Tests go here
public void SetFixture(TestFixture data)
{
}
}
}
无论您在ProtobufTests规范中进行多少次测试,代理人只会被添加一次。