单元测试项目如何测试main()
How does unit test project test main()
我在VS2019中有一个简单的.net core控制台项目如下。
public class Program
{
public static int Sum(int x, int y)
{
return x + y;
}
public static void Main(string[] args)
{
Func<int, int, int> sum = Sum;
Console.WriteLine(sum(10, 10));
}
}
我的问题是如何创建单元测试项目来测试 main()。
static void方法是你只能验证它是否与输入参数或静态成员交互。更好的方法是将所有逻辑委托给单独的组件并对其进行测试。那么无论是哪种类型的项目都无所谓。您可以只创建一个单元测试项目并测试您的代码。
public static void Main(string[] args)
{
var component = new Component();
component.Execute(args);
}
示例组件:
public class Component
{
public static int Sum(int x, int y)
=> x + y;
public void Execute(string[] args)
{
Func<int, int, int> sum = Sum;
Console.Write(sum(10, 10));
}
}
测试:
[Fact]
public void Test()
{
//assert
var stringWriter = new StringWriter();
Console.SetOut(stringWriter);
var component = new Component();
component.Execute(It.IsAny<string[]>());
var output = stringWriter.ToString();
Assert.Equal("20", output);
}
我在VS2019中有一个简单的.net core控制台项目如下。
public class Program
{
public static int Sum(int x, int y)
{
return x + y;
}
public static void Main(string[] args)
{
Func<int, int, int> sum = Sum;
Console.WriteLine(sum(10, 10));
}
}
我的问题是如何创建单元测试项目来测试 main()。
static void方法是你只能验证它是否与输入参数或静态成员交互。更好的方法是将所有逻辑委托给单独的组件并对其进行测试。那么无论是哪种类型的项目都无所谓。您可以只创建一个单元测试项目并测试您的代码。
public static void Main(string[] args)
{
var component = new Component();
component.Execute(args);
}
示例组件:
public class Component
{
public static int Sum(int x, int y)
=> x + y;
public void Execute(string[] args)
{
Func<int, int, int> sum = Sum;
Console.Write(sum(10, 10));
}
}
测试:
[Fact]
public void Test()
{
//assert
var stringWriter = new StringWriter();
Console.SetOut(stringWriter);
var component = new Component();
component.Execute(It.IsAny<string[]>());
var output = stringWriter.ToString();
Assert.Equal("20", output);
}