gpt4 book ai didi

.net - NUnit 部署项

转载 作者:行者123 更新时间:2023-12-02 09:43:03 25 4
gpt4 key购买 nike

在 MsTest 中,如果我需要另一个项目中的一些文件进行测试,我可以指定 DeploymentItem 属性。 NUnit 中有类似的东西吗?

最佳答案

您应该查看另一个线程 contrasts the capabilities of NUnit and MSTest .

此处接受的答案具有误导性。 NUnit 根本不提供 [DeploymentItem("")] 属性,这正是 @Idsa 希望在 NUnit 中提供等效解决方案的原因。

我的猜测是,这种属性会违反 NUnit 作为“单元”测试框架的范围,因为要求在运行测试之前将项目复制到输出意味着它依赖于可用的资源。

我正在使用自定义属性来复制 localdb 实例,以便针对一些我不想每次都用代码生成的大量测试数据运行“单元”测试。

现在使用属性 [DeploymentItem("some/project/file")] 会再次将此资源从文件系统复制到 bin 中,从而有效地刷新每个测试方法的源数据:

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Struct, 
AllowMultiple = false,
Inherited = false)]
public class DeploymentItem : System.Attribute {
private readonly string _itemPath;
private readonly string _filePath;
private readonly string _binFolderPath;
private readonly string _itemPathInBin;
private readonly DirectoryInfo _environmentDir;
private readonly Uri _itemPathUri;
private readonly Uri _itemPathInBinUri;

public DeploymentItem(string fileProjectRelativePath) {
_filePath = fileProjectRelativePath.Replace("/", @"\");

_environmentDir = new DirectoryInfo(Environment.CurrentDirectory);
_itemPathUri = new Uri(Path.Combine(_environmentDir.Parent.Parent.FullName
, _filePath));

_itemPath = _itemPathUri.LocalPath;
_binFolderPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

_itemPathInBinUri = new Uri(Path.Combine(_binFolderPath, _filePath));
_itemPathInBin = _itemPathInBinUri.LocalPath;

if (File.Exists(_itemPathInBin)) {
File.Delete(_itemPathInBin);
}

if (File.Exists(_itemPath)) {
File.Copy(_itemPath, _itemPathInBin);
}
}
}

然后我们可以像这样使用:

[Test]
[DeploymentItem("Data/localdb.mdf")]
public void Test_ReturnsTrue()
{
Assert.IsTrue(true);
}

关于.net - NUnit 部署项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378276/

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