问题标签 [deploymentitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
20 回答
83500 浏览

c# - DeploymentItem 属性的问题

我目前正在维护一个用 C#.net 编写的“旧”系统,删除了一些过时的功能并进行了一些重构。感谢上帝,前面的人写了一些单元测试(MSTests)。我对 JUnit 测试很满意,但对 MSTests 还没有做太多。

测试方法有一个DeploymentItem属性,指定一个文本文件,该文件由正在测试的业务逻辑方法解析,第二个属性DeploymentItem只指定了一个路径,其中包含必须部署的一堆 TIF 文件。

测试之前工作,但现在我必须更改包含在 \files\tif 目录中的 TIF 文件的名称。根据规则,TIF 文件名必须与该ExistsTifTest()方法也检查的特定模式匹配。现在我不得不更改文件名以使它们适应新的要求,并且突然之间不再像以前那样部署 TIF 文件。

有人可以告诉我为什么会发生这种情况或可能是什么原因吗?如果我在 \files\valid\ 目录中的“valid_entries.txt”旁边添加一个新的文本文件“my2ndTest.txt”,并在测试方法上使用相应的 DeploymentItem 属性,也会发生同样的事情。文件没有被部署?

我现在通过直接在 testrunco​​nfig 中定义部署路径来部署图像,但我想了解为什么会发生这些事情,或者为什么我的新文件“my2ndTest.txt”没有部署而其他文件部署。

0 投票
2 回答
660 浏览

c# - 是否有可能拥有动态的动态部署项目?

我想编写测试来检查将与我们的项目一起提供的某些文件的存在(和其他东西)。

这就是我现在所拥有的:

如您所见,当我想添加另一个文件进行测试时,我必须添加到 [DeploymentItem] 和 _Files 列表

有没有办法动态更改部署项?或者在运行时从他们那里获取。我最终可能会在这里拥有超过 30 个文件,而且我不想要两个列表。

提前致谢!

0 投票
3 回答
9178 浏览

.net - DeploymentItemAttribute 的相对路径根是什么?

使用MSTest , DeploymentItemAttribute的相对路径根是什么。

0 投票
1 回答
1903 浏览

c# - DeploymentItem 属性导致测试类中的所有测试失败,并出现错误“无法创建类 [TestClass] 的实例”

当我尝试运行一组具有 DeploymentItem 属性的类的单元测试时,我遇到了一个奇怪的错误。

单元测试解决方案有 2 个测试类,一个用于测试业务逻辑,我将其称为“a 类”(无论如何这个都可以正常工作),另一个用于测试从 DeploymentItem 文件中读取数据,我将其称为'b 级'。

在两个测试类中将 DeploymentItem 属性设置为 ANYWHERE,类 b 中的测试都失败并出现错误...

无法创建类 [class b] 的实例。错误:System.NullReferenceException:对象引用未设置为对象的实例。

但是,如果我从两个类中完全删除 DeploymentItem 属性,所有测试都会运行,但显然在 b 类中失败,因为没有要读取的文件,因此所有断言都失败。

我希望我已经充分解释了这个问题,如果没有,我应该能够在需要时澄清更多。非常感谢任何帮助。

0 投票
2 回答
5175 浏览

c# - C# 使用静态变量作为 DeploymentItem 的参数

我想DeploymentItem在 MSTest 单元测试中使用静态变量作为参数,但我似乎无法这样做。当单元测试运行时,需要将一个 XSL 文件与 DLL 文件一起复制,我将位置定义为

但是,当我执行以下操作时:

我收到此构建错误:

属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式

好吧好吧,但是自己组装路径似乎很脏:

我在这里是否过于挑剔想要使用Path.Combine?我还有另一种选择吗?我想我可以将 XSL 文件放在根解决方案目录中,这样我就不必将项目目录作为路径的一部分传递。

0 投票
4 回答
13100 浏览

c# - C# DeploymentItem 无法复制 MSTest 单元测试的文件

当我DeploymentItem在 MSTest 单元测试中使用该属性时,我无法将 XSL 文件复制到与测试程序集相同的目录中。我按照为这个问题选择的答案,我需要复制的文件将其“复制到输出目录”设置为“始终复制”。当我检查我的 ProjectDir\bin 目录(目标目录)时,我想要复制的文件确实在那里,以及 DLL 和 PDB。

我有几个具有以下设置的单元测试:

XSL 测试失败,因为当我检查 MSTest 的 TestResults\particularTestRun\Out 目录时,我看到了 DLL 和 PDB,但我的 XSL 文件不存在。我想知道的是为什么即使我明确告诉 Visual Studio 通过DeploymentItem?

0 投票
1 回答
3702 浏览

c# - MSTest VS2010 - DeploymentItem 将文件复制到不同机器上的不同位置

我发现了 DeploymentItem

在不同机器上构建和运行测试时,不会将我的测试数据文件复制到同一位置。

测试数据文件被复制到我机器上测试项目中的“bin\debug”目录,但在我朋友的机器上它们被复制到“TestResults\ name_machine YY-MM-DD HH_MM_SS \Out”。

我机器上的bin\debug目录可以用代码获取:

并且相同的代码将TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out在我朋友的 PC 上返回。

然而,这并不是真正的问题。问题是我制作的测试数据文件有一个文件夹结构,这个文件夹结构只有在复制到 bin\debug 时才在我的机器上维护,而在我朋友的机器上只有文件被添加到TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out目录中。这意味着测试将在我的机器上通过而在他的机器上失败!

有没有办法确保 DeploymentItem 总是复制到 bin\debug 文件夹?或者一种确保在 DeploymentItem 将文件复制到文件TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out夹时保留文件夹结构的方法?

0 投票
2 回答
3080 浏览

visual-studio-2010 - 当每个解决方案有多个测试项目时,DeploymentItem 无法复制目录

我有许多复制特定目录的测试类和方法,如下所示:

这些测试在一个程序集中,并且 LangaugeData 目录中的所有文件都Copy to Output Directory设置为Copy Always.

一切正常,Out只要我只有一个测试程序集加载到解决方案中,或者这是我从中运行测试的唯一程序集(即仅在当前上下文/类中运行测试),该目录就会复制到测试结果目录。

一旦我添加了第二个程序集并运行解决方案中的所有测试,则该目录不再被复制,任何其他只是单个文件的 DeploymentItems 似乎都可以正常复制。

测试本身都仍在运行,但依赖于该目录的测试会崩溃。大概是因为 MSTest 找不到该目录 - 也许它期望它位于其他测试程序集之一的构建目录中?

任何想法关于阻止复制的多个测试项目是什么,以及我可以做些什么来解决它,除了将该目录中的每个文件添加为单独的 DeploymentItem 吗?

0 投票
7 回答
36969 浏览

unit-testing - MSTest 部署项是否仅在项目测试设置文件中存在时才有效?

我似乎无法掌握应该如何配置 MSTest 部署项。我已经能够通过修改项目的测试设置文件使它们正常工作,但这并不理想——部署项配置与单个测试分开,并且文件路径似乎存储为绝对路径,除非文件是在解决方案文件夹下。

我是否应该能够使用[DeploymentItem]属性添加部署项,[TestClass]或者[TestMethod]不必创建/修改项目测试设置文件?我该如何做到这一点?

(坦率地说,我不明白需要单独的部署项配置——为什么不直接对应该是部署项的项目文件使用现有的“复制到输出目录”设置?)

0 投票
1 回答
986 浏览

c# - 如何在单元测试中删除过时的 DeploymentItem?

考虑以下测试类:

根据这些测试的运行顺序,它们可能会通过,但由于不能保证它们会按照定义的顺序运行,因此现实世界的行为是不确定的……显然这很糟糕。

我环顾四周并尝试了 TestCleanupAttribute,但未能找到一种可靠的方法让两个测试都通过,但似乎应该有一个简单的方法来做到这一点。这样的方法存在吗?

更新:这似乎是不可能的,因为测试框架假设 DeploymentItems 在部署后不会更改,因此每个项目只部署一次。在短期内,我已经将被测代码更改为不再需要这种行为,从长远来看,我很可能会实现一个不做这个假设的属性。