当我使用 Console.Readline() 时,单元测试在中间停止
Unit Testing Stops In Middle When I use Console.Readline()
我想使用最小起订量模拟 Console.ReadLine()
,但我不知道该怎么做。我试图在互联网上搜索,但找不到合适的答案。
我尝试了各种方法,但 none 到目前为止都有效。这只是一个演示文件。我正在开发一个控制台应用程序,我必须在其中使用 Console.ReadLine()
。但我不知道如何模拟使用 Console.ReadLine()
.
的函数
using System;
namespace _Calci
{
public class Operands
{
public int num1;
public int num2;
}
public class ret
{
public virtual int _ret()
{
return (Int32.Parse(Console.ReadLine()));
}
}
public class Calci : ret
{
ret retObj = new ret();
public int Multiply()
{
int result;
int num1 = 4;
result = retObj._ret() * num1;
return result;
}
}
}
单元测试文件:
using Xunit;
using _Calci;
using Moq;
namespace Testings
{
public class Testing
{
[Fact]
public void MultiplyTesting()
{
Mock<ret> mockingVar = new Mock<ret>();
mockingVar.Setup(x=> x._ret()).Returns(()=>5);
Calci calciObj = new Calci();
int expected = 20;
int actual = calciObj.Multiply();
Assert.Equal(expected, actual);
}
}
}
在您的 Calci
class 中通过构造函数 ret
对象注入而不是在 Calci
中创建新实例。然后在你的测试中你将能够像这样注入模拟的 ret
that returns 任何 int:Calci calciObj = new Calci(mockingVar.Object);
我想使用最小起订量模拟 Console.ReadLine()
,但我不知道该怎么做。我试图在互联网上搜索,但找不到合适的答案。
我尝试了各种方法,但 none 到目前为止都有效。这只是一个演示文件。我正在开发一个控制台应用程序,我必须在其中使用 Console.ReadLine()
。但我不知道如何模拟使用 Console.ReadLine()
.
using System;
namespace _Calci
{
public class Operands
{
public int num1;
public int num2;
}
public class ret
{
public virtual int _ret()
{
return (Int32.Parse(Console.ReadLine()));
}
}
public class Calci : ret
{
ret retObj = new ret();
public int Multiply()
{
int result;
int num1 = 4;
result = retObj._ret() * num1;
return result;
}
}
}
单元测试文件:
using Xunit;
using _Calci;
using Moq;
namespace Testings
{
public class Testing
{
[Fact]
public void MultiplyTesting()
{
Mock<ret> mockingVar = new Mock<ret>();
mockingVar.Setup(x=> x._ret()).Returns(()=>5);
Calci calciObj = new Calci();
int expected = 20;
int actual = calciObj.Multiply();
Assert.Equal(expected, actual);
}
}
}
在您的 Calci
class 中通过构造函数 ret
对象注入而不是在 Calci
中创建新实例。然后在你的测试中你将能够像这样注入模拟的 ret
that returns 任何 int:Calci calciObj = new Calci(mockingVar.Object);