标签: deploymentitem

DeploymentItem属性的问题

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

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

[TestMethod()]
[DeploymentItem(@"files\valid\valid_entries.txt")]
[DeploymentItem(@"files\tif\")]
public void ExistsTifTest()
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

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

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

我通过直接在testrunco​​nfig中定义部署路径来获得现在部署的映像,但我想了解为什么会发生这些事情,或者为什么我的新文件"my2ndTest.txt"在其他人没有部署时会被部署.

c# unit-testing mstest visual-studio deploymentitem

94
推荐指数
8
解决办法
7万
查看次数

MSTest部署项仅在项目测试设置文件中存在时才起作用吗?

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

难道我不应该能够添加使用部署项目[DeploymentItem]上无论是属性[TestClass]还是[TestMethod]无需创建/修改项目的测试设置文件?我该如何做到这一点?

(坦率地说,我不明白是否需要单独的部署项配置 - 为什么不使用现有的"复制到输出目录"设置来处理应该是部署项目的项目文件?)

unit-testing mstest visual-studio-2010 deploymentitem

75
推荐指数
3
解决办法
3万
查看次数

DeploymentItem不部署文件

MS unit testing framework用来测试我的C#库.我必须打开一个我正在部署的文件DeploymentItem attribute.但它没有将文件部署到Test部署目录.

在我的Unit-test项目中,我TestFile在这个文件夹中创建了一个文件夹,里面有多个文件,比如a.txt,b.txt.

现在在我的Unit-test类中,我添加了DeploymentItem属性.但文件没有被复制.

这是我的代码.

[TestClass]
[DeploymentItem("TestFile")]
public class CustomLibraryTest
{
    public TestContext TestContext { get; set; }

    [TestMethod]
    [DeploymentItem(@"TestFiles\a.txt")]  // THis should deploy a.txt to test deployment directory
    {
        var path = TestContext.TestDeploymentDir + "a.txt";
        // Now when I debug this unit-test, and open path in explorer,
        // a.txt is not present in "TestResults\Deploy_fhafeez 2013-05-28 13_02_37\Out" folder
    }
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

c# unit-testing deploymentitem vs-unit-testing-framework visual-studio-2012

17
推荐指数
2
解决办法
2万
查看次数


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

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

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

private const string DLL = "Service.dll";
private const string XSL_PATH = "transform.xsl";

[TestInitialize]
public void InitializeTest()
{
    Assert.IsTrue(File.Exists(DLL)); // passes
}

[TestMethod]
[DeploymentItem(DLL)]
[DeploymentItem(XSL_PATH)]
public void XmlToResultsTest()
{
    Assert.IsTrue(File.Exists(XSL_PATH)); // fails
}
Run Code Online (Sandbox Code Playgroud)

XSL测试失败,因为当我检查MSTest的TestResults\specificTestRun\Out目录时,我看到了DLL和PDB,但我的XSL文件不存在.我想知道的是,为什么 XSL文件不会与DLL和PDB一起被复制,即使我明确告诉Visual Studio将其复制到那里DeploymentItem

c# mstest visual-studio deploymentitem

10
推荐指数
1
解决办法
1万
查看次数

DeploymentItem在VS2010和VS2012中的行为方式不同

我有一个VS2010解决方案,我正在尝试升级到VS2012.

我在VS2012中遇到了MSTest单元测试的问题.所有测试都包括测试类上的DeploymentItem属性.

[TestClass]
[DeploymentItem(@"SubDir\SubDir2\models", "models")]
public class UnitTests
{ ... }
Run Code Online (Sandbox Code Playgroud)

在2010年,它正确地从SolutionDirectory\SubDir\SubDir2\models目录中复制相关文件.

在2012年,它试图从部署测试的目录进行复制 SolutionDirectory\UnitTests\bin\debug\SubDir\SubDir2\models

我正在寻找一种方法来恢复旧的行为.

c# mstest deploymentitem .net-4.5 visual-studio-2012

9
推荐指数
1
解决办法
2016
查看次数

DeploymentItem-Attribut用于文件夹中的所有文件和文件夹

我想将所有文件部署在单元测试目录中的文件夹中.通过DeploymentItem-Attribut部署eacht项目太多了.

我试过类似的东西

[DeploymentItem(".\\")]
Run Code Online (Sandbox Code Playgroud)

要么

[DeploymentItem("*.*")]
Run Code Online (Sandbox Code Playgroud)

但两者都不起作用.

有没有人知道如何通过Deployment-Attribut部署所有子文件夹的所有文件?

c# unit-testing deploymentitem

6
推荐指数
1
解决办法
5338
查看次数

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

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

private static string _xslPath = Path.Combine("MyProjectDir", "transform.xsl");
Run Code Online (Sandbox Code Playgroud)

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

[TestMethod]
[DeploymentItem(DLL)]
[DeploymentItem(_xslPath)]
public void XmlToResultsTest() { }
Run Code Online (Sandbox Code Playgroud)

我得到这个构建错误:

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

好的,好的,但是自己组装路径似乎太脏了:

[DeploymentItem(@"MyProjectDir\transform.xsl")]
Run Code Online (Sandbox Code Playgroud)

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

c# mstest path deploymentitem

5
推荐指数
1
解决办法
4917
查看次数

MSTest VS2010 - DeploymentItem将文件复制到不同计算机上的不同位置

我找到了DeploymentItem

[TestClass(), DeploymentItem(@"TestData\")]
Run Code Online (Sandbox Code Playgroud)

在构建测试并在不同计算机上运行时,不会将我的测试数据文件复制到同一位置.

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

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

string appDirectory = 
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
Run Code Online (Sandbox Code Playgroud)

相同的代码将返回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夹时保留文件夹结构的方法?

c# testing unit-testing mstest deploymentitem

5
推荐指数
1
解决办法
3647
查看次数

MsTest:如何设置相对于$(ProjectDir)或$(OutDir)的部署项

我想在我的测试中添加一个部署项.据我所知,到目前为止,路径与解决方案有关.我希望路径是相对于项目的.否则,项目不能用于多种解决方案.如何将部署项配置为相对于项目因变量?

我希望有类似的东西:[DeploymentItem(@"$(ProjectDir)..\..\bin\$(Configuration)")]但是我没有找到任何文档,它似乎不起作用.


我刚做了一个小测试.只是简单的向导代码和一个部署项:

[TestMethod]
[DeploymentItem("stdafx.cpp")]
void TestMethod1()
{
    Assert::Fail();
};
Run Code Online (Sandbox Code Playgroud)

并且trx文件显示以下行:

警告:测试运行部署问题:无法获取测试'TestProject1.UnitTest1.TestMethod1'指定的部署项'stdafx.cpp'的文件:System.IO.FileNotFoundException:找不到文件'd:\ Development\Projects\deploymentItemTest\stdafx.cpp".System.IO.FileNotFoundException:找不到文件'd:\ Development\Projects\deploymentItemTest\stdafx.cpp'.文件名:'d:\ Development\Projects\deploymentItemTest\stdafx.cpp'

这意味着相对于解决方案目录(位于...\depoymentItemTest)而不是项目目录(位于...\depolymentItemTest\TestProject1中)搜索"stdafx.cpp"

unit-testing mstest deploymentitem

5
推荐指数
1
解决办法
3499
查看次数

vs2012中的DeploymentItem不复制文件

我想在测试中添加部署项.

我的解决方案结构如下:

MySolution\
-- TestData\
  --addresses.xml
-- ProjectName.TestProject\
  --Internal\
    --MyTestClass.cs 
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下属性添加文件:

[DeploymentItem(@"TestData\addresses.xml", " TestData")]
Run Code Online (Sandbox Code Playgroud)

...什么不起作用但如果我指定absuluten文件路径,vs将复制该文件.

[DeploymentItem(@"C:\Dir1\Dir2\TestData\addresses.xml", " TestData")]
Run Code Online (Sandbox Code Playgroud)

c# unit-testing deploymentitem visual-studio-2012

5
推荐指数
1
解决办法
2726
查看次数

为什么数据驱动单元测试在vs2012中在vs2010中正常工作时失败了?

我有一些数据驱动的单元测试在Visual Studio 2010中运行得很好.这些测试使用以下模式实现.

[TestMethod()]
[DeploymentItem("path_to_data_dir_relative_to_solution\\my_data.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\my_data.xml", "Token", DataAccessMethod.Sequential)]
public void MyTestMethod()
{
    // Arrange
    const string EXPECTED_PARAM_NAME = "table";
    string data = TestContext.DataRow["Data"].ToString();
    var sut = new MyClassUnderTest();

    // Act
    sut.DoSomething(data);

    // Assert
    Assert.IsTrue(sut.DidSomething);
}
Run Code Online (Sandbox Code Playgroud)

这是我的解决方案结构.

  • MySolutionFolder
    • MyTestProjectFolder
    • MyTestDataFolder
      • my_data.xml

当我在Visual Studio 2012中运行相同的测试时,它们失败并显示以下错误消息.

结果消息:单元测试适配器无法连接到数据源或读取数据.有关解决此错误的详细信息,请参阅MSDN Library中的"数据驱动单元测试疑难解答"(http://go.microsoft.com/fwlink/?LinkId=62412).错误详细信息:对象引用未设置为对象的实例.

为什么我的单元测试突然失败了?

c# data-driven-tests visual-studio-2010 deploymentitem visual-studio-2012

5
推荐指数
1
解决办法
7258
查看次数

MSTest DeploymentItem不会将文件复制到输出目录

美好的一天!

我有以下项目结构:

Solution
-My.Project
-My.Project.Test
--Resources
---mytest.file
Run Code Online (Sandbox Code Playgroud)

在我的测试文件中跟随方法:

[TestMethod]

[DeploymentItem("My.Project.Test\\Resources\\mytest.file", @"Resources")]

TestMethod()

{

....

string path = "Resources\\mytest.file"; ....

}
Run Code Online (Sandbox Code Playgroud)

根据http://msdn.microsoft.com/en-us/library/ms182475%28v=vs.100%29.aspx,我想使用DeployItemAttribute而不使用"部署项属性".

但是当我调试它的方法时,我抓住了"File not found exception".

我能做什么?

PS:还在http://social.msdn.microsoft.com/Forums/en-US/vststest/thread/474d51ee-7ab9-4311-b7b0-b21266eb01d5上发布了这个问题

最好的祝福!

mstest deploymentitem

2
推荐指数
1
解决办法
1万
查看次数