我是单元测试的新手.如何检查控制台输出?我有
namespace XXShapes
{
public abstract class XXShape
{
public virtual void DrawXXShape()
{
Console.WriteLine("The XXShape was drawn.");
}
}
public class XXCircle : XXShape
{
public override void DrawXXShape()
{
Console.WriteLine("The XXCircle was drawn.");
}
}
Run Code Online (Sandbox Code Playgroud)
}
namespace XXShapes.Test
{
[TestFixture]
public class XXShapeTest
{
[Test]
public void MyFirstTest()
{
XXShape s = new XXCircle();
string expected = "The XXCircle was drawn.";
s.DrawXXShape();
string actual = Console.ReadLine();
Assert.AreEqual(expected, actual);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我应该如何正确地测试这个?谢谢你的任何指示.干杯,〜ck
Ste*_*ham 14
字面上的答案是你Console.SetOut在调用被测试的类之前使用它来指向stdout一个memoryStream或类似的东西,你可以在以后检查它的内容.
更好的答案是使用一个模拟框架,比如Rhino Mocks来创建抽象类的具体实例,并期望设置该DrawXXShape方法将被调用.
那根本不是你会做的。
在测试中,您通常会检查对象的状态,例如:
Assert.IsTrue(foo.Field, Equals, "hello")
Run Code Online (Sandbox Code Playgroud)
取决于您选择的框架的工作方式。因此,一般来说,您需要改变您的方法以符合此模型。
| 归档时间: |
|
| 查看次数: |
5612 次 |
| 最近记录: |