using System;
using AspectCore.DynamicProxy;
using Util.Aop;
using Util.Exceptions;
using Util.Properties;
using Xunit;
namespace Util.Applications {
///
/// 异常扩展测试
///
public class ExceptionExtensionsTest {
///
/// 测试获取原始异常
///
[Fact]
public void TestGetRawException() {
var exception = new AspectInvocationException( null, new Exception( "a" ) );
Assert.Equal( "a",exception.GetRawException().Message );
}
///
/// 测试获取异常提示 - 验证空
///
[Fact]
public void TestGetPrompt_Null() {
Exception exception = null;
Assert.Null( exception.GetPrompt() );
}
///
/// 测试获取异常提示 - 生产环境隐藏系统异常消息
///
[Fact]
public void TestGetPrompt_IsProduction_True() {
var exception = new Exception( "a" );
Assert.Equal( R.SystemError, exception.GetPrompt( true ) );
}
///
/// 测试获取异常提示 - 非生产环境显示系统异常消息
///
[Fact]
public void TestGetPrompt_IsDevelopment_False() {
var exception = new Exception( "a" );
Assert.Equal( "a", exception.GetPrompt() );
}
///
/// 测试获取异常提示 - Warning异常生产环境正常显示
///
[Fact]
public void TestGetPrompt_Warning_IsProduction_True() {
var exception = new Warning( "a" );
Assert.Equal( "a", exception.GetPrompt( true ) );
}
///
/// 测试获取异常提示 - 非生产环境显示Warning异常消息
///
[Fact]
public void TestGetPrompt_Warning_IsProduction_False() {
var exception = new Warning( "a" );
Assert.Equal( "a", exception.GetPrompt() );
}
///
/// 测试获取异常提示 - 显示Warning多层异常消息
///
[Fact]
public void TestGetPrompt_Warning_2Level() {
var rawException = new Exception( "a" );
var exception = new Warning( rawException );
Assert.Equal( "a", exception.GetPrompt() );
}
///
/// 测试获取异常提示 - 显示原始异常消息
///
[Fact]
public void TestGetPrompt_AspectInvocationException() {
var exception = new AspectInvocationException( null, new Exception( "a" ) );
Assert.Equal( "a", exception.GetPrompt() );
}
}
}