单元测试帮助。如何测试控制台的消息输出?

2023-11-25

我是单元测试的新手。如何检查控制台输出? 我有

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.");
    }
}

}

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);
        }
    }


}

我应该如何正确地测试这个? 感谢您的指点。 干杯, 〜ck


字面上的答案是你会使用Console.SetOut在调用被测类进行指导之前stdout进入内存流或类似的,您可以稍后检查其内容。

更好的答案是使用模拟框架,例如 Rhino Mocks 来创建抽象类的具体实例,并期望DrawXXShape方法将被调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单元测试帮助。如何测试控制台的消息输出? 的相关文章

  • 将 SQL 保留在存储过程中与代码中的优点和缺点是什么

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动
  • C# - 带 GUI 的后台应用程序

    我的问题是我想创建一个后台应用程序 但具有可以恢复并最小化到系统托盘的用户界面 并且它从窗口启动 我尝试搜索如何启动 但只找到有关 Windows 服务的线程 没有 UI 或创建表单并隐藏它 所以我的问题是我应该如何开始 Windows 窗
  • 简单、高效的弱指针,当目标内存被释放时设置为 NULL

    有没有简单 高效的弱 保护指针 我需要多个指向同一对象的指针 当删除该对象时 这些指针都会自动设置为 NULL 有一个 主 指针始终用于删除对象 但可以有多个其他指针引用同一对象 以下是一些不太符合我的需求的解决方案 QPointer ht
  • crt0 是否加载 msvcrt.dll?

    我想弄清楚标准 C 函数是什么样的printf 在 Windows 环境下加载到内存中 我知道crt0 obj准备堆栈 调用int main int argc char argv 然后使用 main 返回的退出代码退出进程 我还听说 C 标
  • 在 C 中读取字符时打印

    我正在尝试编写一个简单的小代码片段来响应箭头键按下 我知道 up 由 A 表示 并且我有以下代码来检查该序列 while 1 input char fgetc stdin if input char EOF input char n bre
  • 通过 Microsoft Graph 从 Azure AD 获取组中的用户

    我正在通过 Microsoft Graph 从 AzureAD 请求用户列表 我取回了 User 对象 但它们的 MemberOf 属性始终为 null 我认为我可以使用 Expand 来专门请求该属性 虽然它不会导致错误 但它也不会填充该
  • 为什么Java不支持C中的clrscr这样的函数?

    我有一个问题 对很多人来说可能听起来很愚蠢 但我不能停下来把它发布在这里 因为在互联网上找不到任何东西 为什么java没有我们在C中使用的clrscr之类的函数 如果我创建了一个基于用户输入反复迭代的 java 控制台应用程序 然后如果我想
  • 调试器 StepInto 自动生成的代码和 JMC 问题

    我正在使用 MDBG 示例制作托管 NET 调试器 目前 我正在努力解决 StepInto 行为 而 StepOut 和 StepOver 似乎有效 实现Just My Code迈步我在呼唤SetJMCStatus在模块加载时 这工作得很好
  • 如何将多种语言设置放入单个 .clang-format 文件中

    我想为 java javascript 和 c 创建一个 clang 格式 我知道如何转储单一语言的示例配置 但不知道如何合并这 3 个配置文件 有关如何将多种语言配置放入单个文件中的示例 BasedOnStyle LLVM IndentW
  • 如何在 Mac OS X 中获取 aio 信号处理程序的用户数据

    我尝试在 Mac OS X 下使用 aio 函数进行异步文件 IO 但在将某种形式的用户数据输入信号处理程序时遇到问题 这是设置操作的代码 class aio context public aio context int fildes bo
  • 在 C# 中将 Exe 文件作为嵌入式资源运行

    我有一个第 3 方 EXE 我只需要从我的 C 应用程序运行它 我的主要目标是对我的 C 文件中的第 3 方可执行文件进行版权保护 有没有更好的方法来做到这一点 我怎样才能做到这一点 首先将嵌入的可执行文件作为资源文件添加到您现有的资源文件
  • 图像的 EMGU/OpenCV FFT 未产生预期结果

    我正在尝试使用 EMGU 可视化图像的 FFT 这是我正在处理的图像 这是预期的结果 Here s what I get 这是我的代码 Image
  • ElementReference 对 Blazor 中条件创建的元素的引用

    我正在尝试将焦点设置为有条件呈现的输入控件 我正在设置ElementReference但它的 id 和 context 都是空的
  • 将模型和订阅密钥传递给 LuisDialog,而不是通过属性

    我正在编写一个可以说两种语言的机器人 因此 我需要使用两个单独的 LUIS 应用程序 每种语言一个 Bot Framework 中的 LuisDialog 是这样初始化的 来自 Microsoft 的示例 LuisModel c413b2e
  • ASPNET MVC - 使用具有相同签名的新助手覆盖 Html.TextBoxFor(model.property)?

    我想用我自己的助手重写 Html TextBoxFor 该助手具有完全相同的签名 当然 但名称空间不同 这是否可能 如果可以 如何实现 原因是我在现有的应用程序中有 100 多个视图 并且我想更改 TextBoxFor 的行为 以便在属性具
  • C++ boost asio超时用于阻止连接

    我有一个 C boost 客户端 它执行阻塞连接并在收到响应后处理消息 我面临一个奇怪的问题 tcp resolver query query tcp v6 this gt host port tcp resolver query v4 m
  • Caliburn.Micro 事件聚合器

    如果这是一个非常愚蠢的问题 请道歉 但我刚刚开始使用 caliburn micro 我正在努力获取 eventAggregator 似乎没有任何内容订阅 我不确定问题是出在视图模型还是引导程序上 这是视图模型 class MainWindo
  • 按下按钮时更改几何绘图画笔的颜色

    我创建了一个按钮模板 有一个图像和一个标签 图像的来源位于 ResourceDictionary Pictures 中 图片的来源是具有白色画笔颜色的 DrawingImage
  • Oracle DataAccess 相关:“动态程序集中不支持调用的成员。”

    据我了解 此类错误已在 SO 上讨论过多次 有些人认为这是 DLL 文件中的错误 有些人通过更改 DLL 版本来解决 其他人似乎没有任何线索 无论如何 我只是发帖试试运气 在 C GUI 上的网格中选择一行时 我的应用程序崩溃了 stack
  • ASP.NET:通过命名空间一次注册多个控件?

    是否可以在 aspx 文件中注册用户控件的完整命名空间 而不是单独注册每个控件 我创建了一堆用户控件并将它们收集到自己的命名空间 MyWebControls 中 如下所示 隐藏代码 namespace MyWebControls publi

随机推荐

  • 无法转换 System.Runtime.Remoting.ObjectHandle

    在我的代码中我有一个接口 可以说它被称为InterfaceName及其实现称为InterfaceImpl 现在 当我动态尝试获取InterfaceImpl使用以下代码 object obj Activator CreateInstance
  • 如何在 Facebook 页面(不是个人资料)上发布信息到墙上

    我有一个用 php 编写的博客网站 它将新的博客文章发布到 twitter 并在后台使用使用 php curl 传递的简单 http post 请求自动进行博客 ping 我有一个博客网站的 Facebook 页面 并且希望将更新发布到页面
  • Visual 2010 不断告诉我“错误:表达式必须具有类类型”

    好吧 我需要一些见解 我正在学习 C 课程 并正在进行我的第二个项目 我正在尝试创建一个选项列表 允许您将电子邮件存储在字符串向量中 现在 在花时间帮助我并查看代码之前 我想指出我的问题 我在文件 HughesProject2 1 cpp
  • 如何进行rails外部数据库调用?

    所以我希望能够将外部数据库添加到我的config database yml然后从中建模一张表 这可能吗 我一直不知道怎么做 连接不同模型的多个数据库 连接通常通过以下方式创建ActiveRecord Base establish conne
  • Collections.emptyList() 与新实例

    在实践中 返回一个空列表是否更好this return Collections emptyList Or like this return new ArrayList
  • 将数字月份转换为月份缩写

    我有一个 csv 其中有一列名为月份的数字向量 有什么方法可以将其转换为月份的缩写月份名称吗 看看month abb持续的 例如 假设您有一个由月份组成的整数向量 那么您可以通过执行以下操作来使用它来获取月份名称的三个字母缩写 gt mon
  • 即使使用 -g 选项,GCC 也不会生成行号信息

    我已经从源代码构建并安装了 GCC 4 8 1 gcc v Using built in specs COLLECT GCC gcc COLLECT LTO WRAPPER usr local libexec gcc x86 64 unkn
  • 如何使用类型名称作为字符串来转换为类型?

    好吧 我一整天都在思考这个想法 我已经到了承认我完全不知道的程度 可能我所做的只是愚蠢的 并且有更好的方法 但这就是我的想法给我带来的 我正在尝试使用通用方法在 WinForms 中加载表单 protected void LoadForm
  • 在 Github Actions 中克隆私有存储库

    我正在尝试在 Github actions 中克隆另一个私有仓库 我已经设定SECRET USER and SECRET PASSWORD在我正在运行操作的存储库的秘密中 在操作中我正在运行命令 git clone https SECRET
  • 使用剪贴板将 Excel 数据复制到 IPython 中的 Python 列表中?

    有没有办法执行以下工作流程 选择 Excel 电子表格中的单元格 使用 Ctrl C 复制它们 将选定单元格的内容以 python 列表或 numpy 数组的形式获取到 IPython shell 中 Update 看来readline P
  • Spark - 使用 Firehose 从分区文件夹中读取 JSON

    Kinesis firehose 将文件 在本例中为时间序列 JSON 的持久性管理到按 YYYY MM DD HH 分区的文件夹层次结构 精确到 24 位数的小时 太棒了 那么如何使用 Spark 2 0 读取这些嵌套的子文件夹并从所有叶
  • JQuery 滚动/分页选项卡

    我正在尝试为一个网站创建一个简单的选项卡栏 该网站能够滚动不适合页面的选项卡 这非常简单 不需要任何 ajax 或动态加载的内容 它只是显示所有选项卡 当您单击一个选项卡时 它会将您带到另一个页面 我已经在互联网上搜索过 但似乎找不到除以下
  • 将多对多关系迁移到 Core Data 中的联接表

    我有一个 iPhone 应用程序 它使用多对多关系将标签和注释链接在一起 我目前正在使用核心数据的 关系 功能来完成此任务 但希望迁移到使用连接表 这是我的挑战 我想从旧模型迁移到联接表模型 并且我需要弄清楚如何执行该数据迁移 有没有关于如
  • 捕获任何 VCL 组件上的鼠标单击,并确定其 .Tag 值

    我正在使用国产翻译工具 下次我将使用其中一个库 如下所述 delphi翻译工具 我的翻译人员抱怨翻译一长串字符串很困难 因为他们没有在上下文中看到它们 在它们出现的屏幕上 一位翻译提出了一个很好的建议 他应该能够单击某个组件来更改其文本 我
  • 这是显而易见的事情,但为什么会失败呢?

    编写 net 代码已经很多年了 但我感觉自己像个菜鸟 为什么下面的代码会失败 byte a Guid NewGuid ToByteArray 16 bytes in array string b new UTF8Encoding GetSt
  • 谷歌浏览器和火狐浏览器缓存 DNS 记录多长时间

    多长时间Firefox and Chrome cache DNS记录在自己的 浏览器 中DNS缓存 他们尊重吗TTL 我认为它是重复的Firefox 使 DNS 缓存失效 它有两个配置值Firefox network dnsCacheExp
  • HTML 源代码中锚点之间的新线会在浏览器中创建空白空间 [重复]

    这个问题在这里已经有答案了 可能的重复 如何消除内联元素之间的空格的可见性 我通常将源代码格式化为易于人类阅读 据我所知浏览器会删除任何 n t来自源的字符 因此它们不会进入渲染的 html 今天 我构建了一个菜单 在渲染的 html 中的
  • fopen无法打开文件的原因是什么

    我有以下代码 我试图打开一个文本文件 char frd 32 word list txt FILE rd fopen frd rb if rd std cout lt lt Coudn t open file t lt
  • 阻止来源为“http://localhost:8084”的框架访问跨源框架

    我正在尝试打印由 jspdf 生成并加载到 iframe 上的 pdf 但收到以下错误消息 DOMException 阻止了具有原点的框架 http 本地主机 8084 从访问跨源框架 这是我的代码 function open var pd
  • 单元测试帮助。如何测试控制台的消息输出?

    我是单元测试的新手 如何检查控制台输出 我有 namespace XXShapes public abstract class XXShape public virtual void DrawXXShape Console WriteLin