我创建了一些单元测试,我使用的是Sitecore.FakeDB。
我们也使用Resharper来运行我们的测试。
当我们使用Resharper测试运行器来运行所有测试时,使用Sitecore.FakeDB的测试会抛出错误:
示例错误是:
SetUp:System.InvalidOperationException:无法读取Sitecore配置。
在Sitecore.Configuration.Factory.GetConfiguration()
at Sitecore.Configuration.Factory.GetConfigNode(String xpath,Boolean assert)
at Sitecore.Configuration.Factory.CreateObject(String configPath,String [] parameters,Boolean assert)
at Sitecore.Configuration.Factory.GetDatabase(String name)
在ImportSitecoreService.cs中的Services.Sitecore.ImportSitecoreService..ctor(ILogger logger,ISettings设置):第15行
在BaseImporter.cs中的Services.Sitecore.Import.BaseImporter`2..ctor(ILogger logger,ISettings设置):第13行
在BaseImporterTests.cs中的Services.Sitecore.Test.Import.StubImporter..ctor(ILogger logger,ISettings设置):第31行
在BaseImporterTests.cs中的Services.Sitecore.Test.Import.BaseImporterTests.Setup():第53行
现在,如果我们在Resharper测试运行器中单独运行测试,那么测试会成功运行并通过。
在TeamCity中运行测试时,测试全部通过,没有错误。
无法解释为什么会发生这种情况,因为它不是在其他情况下工作的测试代码。即在一些开发者机器上,测试总是通过,但在其他测试运行时,其他测试失败。
使用NuGet安装Sitecore.FakeDB软件包。 我已经检查过,测试应用程序确实看起来已经正确配置了app.config。
答案 0 :(得分:2)
您的Resharper Unit测试设置是什么样的? (Resharper>选项>工具>单元测试)
我遇到并行单元测试执行问题,并将Run up to [X] assemblies in parallel
设置为1。
如果您有多个使用FakeDB的测试程序集,也可以尝试检查Use separate AppDomain for each assembly with tests
。