当前位置: 首页 > 知识库问答 >
问题:

如何将值传递给没有参数的方法?

斜和硕
2023-03-14

我有办法

  public User authenticateUser(){
      Scanner scr = new Scannery(System.in);
      String name = scr.nextLine();
      String password = scr.nextLine();
      return new User(name,passworrd);
    }

我想知道如果它真的创建了用户,我是否可以对其进行单元测试。但是它没有参数。

我尝试了以下方法:

@Test
public void testIfReadCredentialsReturnUser(){
    User user = mock(User.class);
    ConsoleView view = new ConsoleView();
    view.readCredentials().setEmail("asd.com");
    view.readCredentials().setPassword("asd");
    assertNotNull(view.readCredentials());
}

然而,这实际上让我通过了与扫描仪的争论,这显然是我在测试中无法做到的。还尝试了其他逻辑。我也尝试过使用when(),thenReturn()thenAnswer(),但我找不到解决这个问题的方法,因为我对模仿还比较陌生。

有人能和我分享一些想法吗?

共有1个答案

羊慈
2023-03-14

以下是您可以做的:

String data = "TestName\nTestPW\n";
InputStream testInput = new ByteArrayInputStream(data.getBytes() );
InputStream old = System.in;
System.setIn(testInput);
user = authenticateUser();
System.setIn(old);
 类似资料:
  • 问题内容: 我有一个使用处理程序发布可运行实例的线程。它工作得很好,但是我很好奇我如何将参数传递给Runnable实例使用?也许我只是不了解此功能的工作原理。 为了避免出现“您为什么需要此问题”的问题,我有一个线程化的动画,必须调出UI线程来告诉它实际绘制的内容。 问题答案: 只需使用接受参数的构造函数实现的类就可以了, 您可以使用参数化构造函数创建Runnable类的实例。

  • 问题内容: 基本上我有一个ArrayList的位置: 在此之下,我调用以下方法: getMap()方法中的参数为: 我遇到的问题是我不确定如何在整个方法列表中传递该方法。 我试过了 但是getMap不接受,因为它不接受Objects []。 现在,如果我使用 它会完美地工作…但是我需要以某种方式传递所有位置…我当然可以继续添加等等,但是数组的大小会有所不同。我只是不习惯整个概念 最简单的方法是什么

  • 问题内容: 我正在A中使用RUN指令安装rpm 但是,我想将值“ 2.3”作为参数传递。我的RUN指令应类似于: 哪里 问题答案: 您正在寻找和指导。这些是Docker 1.9中的新功能。查看https://docs.docker.com/engine/reference/builder/#arg。这将允许您添加到,然后使用构建。

  • 问题内容: 我很好奇Go中是否有可能。我有多种方法的类型。是否可以有一个函数,该函数需要一个方法参数,然后将其称为类型? 这是我想要的一个小例子: Go认为type 有一个称为的方法,而不是用传入的方法名称替换它。 问题答案: 是的,有可能。您有2(3)个选项: 规范:方法表达式 该表达式产生的功能与第一个参数等效,但具有一个显式接收器。它有签名。 在这里,方法接收器是显式的。您只需将方法名称(具

  • 问题内容: 以下代码的输出是因为从beginIndex到EndIndex-1。但是,令我惊讶的是这里的3(int)因为是两个整数。这背后的概念是什么? 问题答案: 一直到C,从本质上讲是一个窄整数类型,并在需要时隐式转换为C。 在Java中,这在技术上称为“扩展原始转换”,在JLS的5.1.2节中进行了介绍。

  • 问题内容: 我想将登录用户单击的sa 列表中的传递给twitter bootstrap 。我正在与 angularjs* 一起使用 grails ,其中数据是通过 angularjs 呈现的。 *** 组态 我的grails视图页面是 我的是 所以,我怎么能传递到? 问题答案: 我尝试如下。 我在 鼓励 按钮上打电话给angularjs控制器, 我设置的从angularjs控制器。 我提供了一个p