【发布时间】:2019-02-28 05:41:42
【问题描述】:
我的项目如下所示。我想创建一个单元测试来验证appsetting.Environment.json 不存在或DataSource:JsonPath 文件不存在时会发生什么。
我正在使用 xUnit,但刚刚开始使用它,
在这种情况下,它应该抛出一个FileNotFoundException 并退出。
internal class Program
{
private static int Main(string[] args)
{
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ENVIRONMENT") ?? "Production"}.json", optional: true)
.Build();
try
{
Log.Information($"{DateTime.Now.ToLongTimeString()} Starting...");
var jsonFileName = Configuration["DataSource:JsonPath"];
if (!File.Exists(jsonFileName)) throw new FileNotFoundException(jsonFileName);
//code if file exist...
}
catch (Exception ex)
{
Log.Fatal(ex, "Terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
}
【问题讨论】:
-
你的单元测试方法是什么样的?你到底面临什么问题?
-
顺便说一句,你的 Main 方法不会抛出任何异常。如果您已经进入单元测试,那么您应该已经具备基本的 C# 知识才能看到这个...... ;-)
-
我只是不知道从哪里开始,这可能是因为它在 Main 中让我感到困惑。 ***Elgonzo,因为有一个 !File.Exist 它确实会抛出新的异常并陷入困境,不确定你的意思
-
那么您是否尝试过编写单元测试?我在这里没有看到任何证据。您的单元测试方法在哪里,包括 Arrange、Act、Assert?
-
@KaptainJ,我不是在谈论 File.Exist 方法,而是在谈论 Main 方法。 (即,像
try { Program.Main(...); } catch(Exception ex) {...}这样的东西永远不会捕捉到任何东西,因为没有什么可以捕捉到)