对于某些测试,我需要使用ClassInitialize方法(通过反射)生成的配置(通过使用反射)运行数据驱动的测试.我尝试了一切,但我无法正确设置数据源.
测试采用csv文件中的类列表(每个类一行),然后将测试到数据库的映射是否运行良好(即尝试从数据库中为每个实体获取一个项目,这将在异常时抛出异常表结构不匹配).
测试方法是:
[DataSource(
"Microsoft.VisualStudio.TestTools.DataSource.CSV",
"|DataDirectory|\\EntityMappingsTests.Types.csv",
"EntityMappingsTests.Types#csv",
DataAccessMethod.Sequential)
]
[TestMethod()]
public void TestMappings () {
Run Code Online (Sandbox Code Playgroud)
显然该文件是EntityMappingsTests.Types.csv.它应该在DataDirectory中.
现在,在Initialize方法(用ClassInitialize标记)中,我把它放在一起,然后尝试编写它.
我应该把它写在哪里?DataDirectory在哪里?
我试过了:
File.WriteAllText(context.TestDeploymentDir + "\\EntityMappingsTests.Types.csv", types.ToString());
File.WriteAllText("EntityMappingsTests.Types.csv", types.ToString());
Run Code Online (Sandbox Code Playgroud)
两者都导致"单元测试适配器无法连接到数据源或读取数据".更确切地说:
错误详细信息:Microsoft Jet数据库引擎找不到对象'EntityMappingsTests.Types.csv'.确保对象存在,并正确拼写其名称和路径名称.
那么我应该把该文件放在哪里?
我也尝试将它写入当前目录并取出DataDirectory部分 - 结果相同.可悲的是,这里的调试支持有限.
请使用technet.microsoft.com/en-us/sysinternals/bb896645中的ProcessMonitor工具.在MSTest.exe或关联qtagent32.exe上放置一个过滤器,找出它尝试加载的位置以及测试加载过程中的哪个时间点.那么请在这里提供这些细节的更新.
| 归档时间: |
|
| 查看次数: |
2980 次 |
| 最近记录: |