gpt4 book ai didi

c# - 当多个单元测试复制同一个文件时,运行所有单元测试失败

转载 作者:行者123 更新时间:2023-11-30 14:50:10 25 4
gpt4 key购买 nike

描述

我正在为一种方法编写单元测试,该方法将文件从源复制到目标。基本上它包括这段代码:

public void MyMethod() 
{
// ...
File.Copy(source, destination, true);
// ...
}

在我的单元测试项目中,我有一个测试文件:(test.png),它位于我的单元测试项目的Resources 文件夹中。我已将 Copy to Output 属性设置为 Always

我有 3 个单元测试正在测试此方法。

当他们点击复制文件的代码行时:source = "Resources\\test.png"

问题

当我单独运行单元测试时,它们都通过并且一切正常。但是,当我在 Visual Studio 中运行所有测试时,出现此运行时错误并且单元测试失败:

System.IO.DirectoryNotFoundException

Could not find a part of the path 'Resources\test.png'.

我的想法...(更新)

  • 可能是因为 Visual Studio 在单独的线程中同时运行每个单元测试,并且它们都同时访问同一个文件?

  • 我认为对于每个单元测试,Visual Studio 都会清理 bin/Debugbin/Release 文件夹。然后它将所有必需的项目文件复制到该文件夹​​中。这导致有时文件实际上不存在?

问题

我该如何解决这个问题?

是否有任何配置设置可以解决这个问题?

当多个单元测试访问同一个文件时,如何在 Visual Studio(和 Team City)中运行所有单元测试?

最佳答案

您可以按照 MSDN: Executing Unit Tests in parallel on a multi-CPU/core machine 中的说明尝试排除多线程问题。 , 将 parallelTestCount 设置为 1。如果现在测试通过,您就缩小了问题范围。

但是,如果您的测试在组中运行时仍然失败 - 我认为这是更有可能发生的情况 - 那么我的建议是检查这些测试共享的任何状态。您描述的模式(即隔离通过;不隔离时失败)是(错误地)共享状态的测试通常表现出的一种症状,并且这些测试正在修改该状态,导致一个或多个测试失败。

关于c# - 当多个单元测试复制同一个文件时,运行所有单元测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37355479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com