C# 执行File.ReadAllText时,NCrunch引发System.IO.DirectoryNotFoundException

C# 执行File.ReadAllText时,NCrunch引发System.IO.DirectoryNotFoundException,c#,.net,unit-testing,asp.net-core,ncrunch,C#,.net,Unit Testing,Asp.net Core,Ncrunch,我对NCrunch有一个问题,当我测试一个试图访问文件系统的方法时,我遇到了以下异常 System.IO.DirectoryNotFoundException Could not find a part of the path 'C:\Users\shawn\AppData\Local\NCrunch\23344\21\EmailAPI.Tests\bin\Debug\netcoreapp2.0\Emails\Templates\BaseEmail.html' 这是EmailAPI项目中的代码

我对NCrunch有一个问题,当我测试一个试图访问文件系统的方法时,我遇到了以下异常

System.IO.DirectoryNotFoundException
Could not find a part of the path 'C:\Users\shawn\AppData\Local\NCrunch\23344\21\EmailAPI.Tests\bin\Debug\netcoreapp2.0\Emails\Templates\BaseEmail.html'
这是EmailAPI项目中的代码,我尝试在其中测试的方法是调用以获取html文件的内容。这段代码在运行api时运行良好,但是当单元测试到达这里时,就会抛出异常

public void SendEmail(){
    var template = System.IO.File.ReadAllText("Emails/Templates/BaseEmail.html")
}
EmailAPI项目结构:

-EmailAPI Project Root
   -Emails
      -Strategies
         -BaseEmailStrategy <--- Class and method under test
      -Templates
         -BaseEmail.html <--- File read from ReadAllText

-EmailAPI.Tests Project Root
   -Emails
      -Strategies
         -BaseEmailStrategyTests <-- Test class
-EmailAPI项目根目录
-电子邮件
-策略

-BaseMailStrategy:如果您正在访问文件系统,那么它不是一个单元测试。但是主要的问题是使用if相对路径(正如您现在发现的,它并不总是能够解决)。我建议:将默认模板设置为嵌入式资源。与此不同的是,您可以允许配置模板目录,并首先尝试从那里读取您的文件,然后再返回嵌入式目录。