首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自测试单元的App_Data路径?

来自测试单元的App_Data路径?
EN

Stack Overflow用户
提问于 2016-12-08 23:26:34
回答 2查看 1.2K关注 0票数 1

我将XUnit用于WebAPI2 web服务上的测试用例。我有一个调用来获取App_Data目录

代码语言:javascript
复制
AppDomain.CurrentDomain.GetData("DataDirectory").ToString();

这将在发布应用程序并正常运行时返回正确的路径,但是,当我运行测试时,它将不会将路径返回到App_Data目录。

我得到了一个例外:Object reference not set to an instance of an object.

知道我该怎么做吗?我试图将一个App_Data目录添加到我的测试项目中,但是它导致了同样的异常。

本质上,这就是我为需要访问的加密实用程序存储XML配置文件的地方。我应该把它移到根部吗?如果我这样做,我将如何从我的测试单元访问它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-09 22:23:02

如果您将配置复制到测试项目(作为app.config),然后使用System.Configuration.ConfigurationManager.AppSettings["SettingName"],它将在使用测试项目运行时从app.config中提取,在使用MVC项目运行时将从web.config中提取。

票数 -1
EN

Stack Overflow用户

发布于 2016-12-09 00:03:57

为此,我建议您抽象出配置数据检索。

如果需要更多的方法,可以使用一个或多个方法编写一个接口,如下所示:

代码语言:javascript
复制
public interface IConfigurationData 
{
    string RetrieveConfigurationData()
}

实现将转到磁盘上的App_Data文件夹。在单元测试中,您模拟该接口,并使它检索测试所需的任何配置。

单元测试不应该触及任何外部系统,比如文件、数据库或第三方API。您可以将它们抽象出来,并使用类似于RhinoMocks、Moq或NSubstitute之类的工具来嘲弄它们。

这样做的原因是您希望您的单元测试尽快运行。当您介绍一个实际的系统时,就像文件一样,它们不再那么快了,当您添加更多的单元测试时,执行时间就会不断增加。理想情况下,您希望您的单元测试在几秒钟内运行,这样您就可以在不延迟开发过程的情况下多次运行它们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41050632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档