我对EntityFramework相对较新,并且在我进一步深入研究并拥有庞大的代码库来回顾性地编写测试之前,我真的想进入测试阶段。我没有太多使用它,所以方法是相当基本的,如下所示;
public Employee GetEmployee(int employeeID)
{
using (DatabaseContext db = new DatabaseContext())
{
return db.Employees.SingleOrDefault(e => e.idEmployee == employeeID);
}
}
这在我的应用程序中很好,但是在我的测试项目中,它不起作用,因为测试项目似乎没有读取app.config文件,所以没有DatabaseContext
的连接字符串可供使用。我已经阅读了一些关于测试的内容,似乎没有什么真正确定的,尽管这post是处理事务的“官方”方式(它与MSDN相关联。这篇文章似乎相当复杂,但需要我做事情与我目前的情况有很大不同,除非我误解了其中的一部分?
有人可以帮我解决这个问题吗?我甚至不能欺骗并将app.config复制到测试项目,它仍然没有读取它(我也尝试重命名为MyApp.exe.config但仍然没有运气)。我的GetEmployee方法错了吗?我应该做更像链接的帖子吗?或者有没有办法测试我还没找到?
答案 0 :(得分:0)
@FizzBuzz - 这是另一篇讨论如何设置单元测试项目以使用实体框架的文章:
How to get Entity Framework to read my app.config file in Unit Test project
答案 1 :(得分:0)
您可以阅读一种集成测试方法here。
关于配置问题设置Copy to Output Directory
属性到Copy Always
应该可以正常工作。
答案 2 :(得分:0)
有解决您面临的问题的选项。
选项1:为app.config值创建模拟。对于嘲笑你可以使用Rhino Mock
选项2:在您的单元测试项目中:右键单击项目>添加>现有项目> 选择文件>将其添加为链接。
答案 3 :(得分:0)
如果你不想使用你的实时数据库(就这样!),那你基本上有两个选择:
第三种方法是模拟所有EF的东西,但这很快变得过于复杂(如果你有兴趣的话,你也可以在上面提到的帖子的前一部分中找到它。)
HTH 托马斯
答案 4 :(得分:0)
感谢信息人员,通过提供的各种链接找到了一些有趣的提示和技巧。最后,我从MSDN尝试了这个article,非常有趣!虽然它说它适用于EF6,但它确实适用于以前的版本。它表明EF6是异步的原因。