如何在java中对用户输入进行单元测试

2024-03-13

我试图了解如何测试用户的输入(请注意,我不是在尝试进行模拟测试,而是对实际用户输入的测试)

目前,正如您在我的程序中看到的那样,我已经对测试用例的值进行了硬编码,并且它通过了所有测试,但是我如何获取用户的输入并对其进行测试。

有没有一种方法可以在我的构造函数中调用 System. 并在测试类中创建 MyClass1 实例时传递它?

如果可能的话,请给我一些示例代码,以便我更好地理解。

如果我有这样的界面

public interface IMyClass{
   public int getvalue1();
   public int getvalue2();
   public int getvalue3();
}

然后是接口实现

public class MyClass1 implements MyClass{

private int _value1 = 0;
private int _value2 = 0;
private int _value3 = 0;



public MyClass1(int number1, int number2, int number3)
{

   _value1 = number1;
    _value2 = number2;
    _value3 = number3;
}

public void setLength1(int value1)
{
    _value1 = value1;
}

public void setLength2(int length2)
{
    _value2 = value2;
}

public void setLength3(int length3)
{
    _value3 = value3;
}

public int getValue1()
{
    return _value1;
}

public int getValue2()
{
    return _value2;
}

public int getValue3()
{
    return _value3;
}
}

最后是一个测试类:

public class ClasTest extends TestCase {

public void testNumbers()
{
   MyClass1 numbers= new MyClass1(1,2,3);
   assertThat(numbers.getValue1(),is(not(numbers.getValue2())));

}
}

谢谢您,我感谢任何帮助。


Use System.setIn(new InputSteam());然后写入传入 System.in 的输入流

see: JUnit:如何模拟System.in测试? https://stackoverflow.com/questions/1647907/junit-how-to-simulate-system-in-testing

单输入

String data = "Users Input";
System.setIn(new ByteArrayInputStream(data.getBytes()));

Scanner scanner = new Scanner(System.in);
System.out.println(scanner.nextLine());

Result

Users Input

多输入

String data = "Users Input" +
        "\nA second line of user input.";
System.setIn(new ByteArrayInputStream(data.getBytes()));

Scanner scanner = new Scanner(System.in);
System.out.println("Line 1: " + scanner.nextLine());
System.out.println("Line 2: " + scanner.nextLine());

Result

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

如何在java中对用户输入进行单元测试 的相关文章

随机推荐

  • 如何在 SLICK 中使用 SQL“LIKE”运算符

    也许是一个愚蠢的问题 但到目前为止我还没有找到答案 那么如何表示 SQL 的 LIKE 运算符SLICK http slick typesafe com 和平常一样 val query for coffee lt Coffees if co
  • 更快的 Python MySQL

    我使用mysql connector MySQLdb Python实现 来访问MySQL 从游标的 select 语句的传输速度不是那么快 有没有办法加快代码速度 也许是另一个图书馆 哪个 我有Windows和Python 3 1 也许行检
  • 忙等待循环中是否需要内存屏障或原子操作?

    考虑以下spin lock 实现 最初来自这个答案 https stackoverflow com a 32658335 3169754 void spin lock volatile bool lock for inserts an ac
  • 在laravel中编写查询join sum groupby

    请帮我写查询 我有 2 个表 项目 和 债务 债务 表有 id project id currency list total 1 1 1 1000 2 1 2 500 3 2 1 1000 4 2 2 500 我需要编写查询以从项目中获取
  • Rails 2.3.5 在 (?) 中使用时动态构建条件数组的问题

    导轨2 3 5 我研究了许多与动态构建 ActiveRecord 查找条件相关的其他问题 我知道有一些很棒的东西 比如搜索逻辑 而且 Rails3 中更好 但是 我正在使用 geokit 进行地理空间搜索 并且我正在尝试构建一个标准条件集
  • SQL Server 2008 R2 将数字转换为数据类型数字时出现算术溢出错误

    我在 SQL Server 2008 R2 上遇到了一个我无法理解的令人困惑的错误 但是 当我在本地服务器 也包括 SQL Server 2008 R2 上尝试相同的请求时 一切正常 所以这是引发问题的请求 select cast cast
  • 在 MVC 中添加许多 CDN 捆绑包

    我正在尝试为生日创建一个日期时间选择器 您可以see here https stackoverflow com questions 34271030 change language to bootstrap datetimepicker 该
  • 与自己的班级交友“>>”

    我有以下课程 我与它交了朋友cout现在我正在尝试与它交朋友cin但我收到错误 任何人都可以帮助我 或者告诉我我做错了什么吗 error c mingw bin lib gcc mingw32 4 6 1 include c bits st
  • 是否有一个手势识别器可以同时处理捏合和平移?

    因此 我正在使用 iOS 4 2 向我的应用程序添加缩放和平移功能 我已经实现了 UIPinchGestureRecognizer 和 UIPanGestureRecognizer 的实例 在我看来 一次只有一个能够识别一个手势 特别是 后
  • 在 Rails 助手的类中使用 link_to

    我有一个使用下面结构的 Rails 助手 但是当我使用它时 我收到消息 undefined method link to 助手安排如下 module MyHelper class Facet def render for search li
  • Dalvik 正在寻找扩展名为“.0”的 .so 文件 - 为什么?

    我已经开始开发一个非常简单的 Android 应用程序 它由三部分组成 Java应用程序本身 一个预先构建的共享库 我们将其称为libfoo 另一个使用预构建库的共享库 我们将其称为libfoowrapper 文件系统看起来像这样 jni
  • PHP 条件取决于窗口宽度(媒体查询?)

    我有一个响应式网站 我需要一些 PHP 条件 具体取决于窗口宽度 或媒体查询 Example if window width gt 1400px echo Your window is wider than 1400px elseif wi
  • 将变量传递到新页面而不使用查询字符串

    有没有一种方法可以将变量从具有弹出 iframe 的 1 个页面传递到客户端按钮单击上的弹出窗口 iframe 而不使用查询字符串 我的变量太大而无法使用查询字符串 提出同样问题的另一种方式 有没有办法在客户端按钮单击时将变量从一个页面传递
  • 用 python 生成随机 ISO8601 日期?

    我已经看到如何从 ISO 格式的日期开始 例如2007 01 14T20 34 22 00 00 使用 python 转换为更具可读性的格式datetime 有没有一种简单的方法来生成随机 ISO8601 日期如同这个答案 https st
  • Cygwin 编译错误:“此应用程序已请求运行时以不寻常的方式终止它”

    我正在尝试运行 Cygwin 但遇到了一些问题 我尝试用 mingw 编译一个既可以在 Windows 上运行也可以在 Unix 系统上运行的程序 但是当我通过 Cygwin 编译它时 gcc threads c o threads 我收到
  • 使用 Sequelize 将多个参数安全地发送到 IN 子句以进行原始查询

    使用 Sequelize 我可以执行原始查询并安全地发送参数 感谢通过参数进行数据库绑定参数 const baz 1 sequelize query select from foo where bar baz replacements ba
  • 如何避免使用JPA注释循环引用?

    我正在为一家商店注释我的域模型 使用 JPA 2 使用 Hibernate Provider 商店里的每件产品都可以有一个Category 每个类别可以分配给多个超级类别和子类别 这意味着 蜡烛 类别可以将 餐厅 和 装饰 作为父类别 将
  • 在 Microsoft Visual Basic 6.0 中填充组合框

    我在 Microsoft Visual Basic 6 0 中有一个组合框 我必须将项目添加到组合框中 这些项目存储在 SQL 数据库中的 Column1 表中 我不确定如何让这些项目在运行时显示在组合框中 以便用户可以选择不同的选项 注
  • 从命令行查找目录中的文件

    在 eclipse 和 textmate 等编辑器 IDE 中 有一些快捷方式可以快速查找项目目录中的特定文件 是否有类似的工具可以在 bash 或其他 shell 中 递归地 对目录中的文件名进行完整路径补全 我的项目有很多目录 而且还有
  • 如何在java中对用户输入进行单元测试

    我试图了解如何测试用户的输入 请注意 我不是在尝试进行模拟测试 而是对实际用户输入的测试 目前 正如您在我的程序中看到的那样 我已经对测试用例的值进行了硬编码 并且它通过了所有测试 但是我如何获取用户的输入并对其进行测试 有没有一种方法可以