一、新建测试项目 xUnit
二、新建一个基础的测试基类:BaseTest,测试类基类: 初始化程序默认需要验证内容或数据库、redis等内容和公用的写日志方式
/// <summary>
/// 测试类基类: 初始化程序默认需要验证内容或数据库、redis等内容和公用的写日志方式
/// </summary>
public class BaseTest
{
protected readonly ITestOutputHelper Output;
/// <summary>
/// 通用请求类
/// </summary>
public static Request baseRequest { get; set; }
public BaseTest(ITestOutputHelper output)
{
Output = output;
string strRequest = "{\"Version\": \"1.1.1\",\"TimeStamp\": \"1619070097612\"}";
baseRequest = strRequest.DeserializeObject<BaseRequest>();
}
/// <summary>
/// 日志控制台输出
/// </summary>
/// <param name="r">日志内容</param>
/// <param name="tag">tag标记</param>
public void WriteOutput(object r, string tag = "")
{
Output.WriteLine(tag + ":" + JsonConvert.SerializeObject(r, Formatting.Indented));
}
/// <summary>
/// 文本日志(自定义日志本地文件夹)
/// </summary>
/// <param name="content"></param>
public void WriteFileslog(string content,string tag="")
{
try
{
var strDate = DateTime.Now.ToString("yyyyMMdd");
File.AppendAllLines($"D:\\LogFolder\\test{strDate}.txt", new[] { $"{tag}:{content}" });
}
catch (Exception)
{
}
}
}
三、新建个测试服务类DemoService
public class DemoService
{
public int Add(int a, int b) => a + b;
public int Minus(int a, int b) => a - b;
public int Multiply(int a, int b) => a * b;
public float Divide(int a, int b) => (a * 1.0f) / b;
}
四、测试用例 UnitTest1,类继承基类BaseTest,初始化一些内容,测试方法需要加标记【Fact】,右键 运行 或调试(打断点)运行
/// <summary>
/// 测试用例
/// </summary>
public class UnitTest1:BaseTest
{
public UnitTest1(ITestOutputHelper output) : base(output) { }
/// <summary>
/// Fact无参测试方法
/// 测试方法1,方法需要加Fact,右键运行测试或调试测试即可,
/// 使用WriteOutput看“测试资源管理器”窗口可以看到输出内容
/// </summary>
[Fact]
public void Test1()
{
DemoService demoService = new DemoService();
var res = demoService.Add(2, 3);
WriteOutput(res, "add");//输出日志到视图控制台
Assert.Equal(5, res);//用来比较两个值是否一致。如果数据不对,测试会显示错误
}
/// <summary>
/// Theory有参测试方法
/// InlineData写几次方式执行就跑几次
/// </summary>
[Theory]
[InlineData(1, 3)]
[InlineData(2, 3)]
[InlineData(3, 3)]
public void Test2(int num1,int num2)
{
DemoService demoService = new DemoService();
var res = demoService.Add(num1, num2);
WriteOutput(res, "add");//输出日志到视图控制台
WriteFileslog(res.ToString(), $"{num1}+{num2}");//如果一次测试多个结果建议写到文件,可以看到所有日志
Assert.Equal(5, res);//用来比较两个值是否一致
}
/// <summary>
/// 使用公共类BaseRequest
/// </summary>
[Fact]
public void Test3()
{
//通过公用类调用api
WriteOutput(baseRequest, "request");//输出日志到视图控制台
}
}