diff --git a/SVSim.UnitTests/AssemblyInfo.cs b/SVSim.UnitTests/AssemblyInfo.cs new file mode 100644 index 0000000..0ee0b9f --- /dev/null +++ b/SVSim.UnitTests/AssemblyInfo.cs @@ -0,0 +1,15 @@ +using NUnit.Framework; + +// Parallelize at the fixture level: different test classes run on separate threads, but tests +// inside one class still execute serially. Each fixture's SVSimTestFactory owns a private +// SQLite :memory: connection, so DB state isn't shared. Process-static caches (e.g. +// BattlePassRepository._curveCache) hold identical data across factories because every test +// seeds from the same JSON, so cross-fixture races on them are data-equivalent. +// Different test classes run on separate threads, but tests inside one class stay serial. Each +// fixture's SVSimTestFactory owns a private SQLite :memory: connection, so DB state isn't shared. +// ParallelScope.All is unsafe today: it exposes process-static caches (BattlePassRepository +// ._curveCache and similar) to races inside heavy-globals fixtures (LoadController, +// PackControllerFullCatalog, StoryService), so within-fixture parallelism is gated on cleaning +// those up first. +[assembly: Parallelizable(ParallelScope.Fixtures)] +