代码 > c#XUnit单元测试避免涉及单例的测试的并发数据竞争

2025-05-08

使用单例时,如果测试并发进行,很明显会造成数据读写冲突。

但是很多时候业务层涉及单例的测试时必须的。

使用XUnit时可以通过集合的注解来避免这个问题

参考

https://stackoverflow.com/questions/1408175/execute-unit-tests-serially-rather-than-in-parallel

 

实际代码

先定义一个单例的集合类

[CollectionDefinition("MainState", DisableParallelization = true)]
public class StateCollection
{
}

然后在会使用的这个单例的类里使用Collection注解

[Collection("MainState")]
public class RelationMapperTest
{
}

即可。

点击登录