gpt4 book ai didi

java - 如何在Java中测试(junit)输入键盘

转载 作者:行者123 更新时间:2023-11-29 06:19:57 24 4
gpt4 key购买 nike

我需要用 Java 为输入键盘制作一个测试单元,有什么容易做到的方法吗?

谢谢。

最佳答案

分解出读取键盘的代码,使其成为一个接口(interface)。然后创建两个实现,一个用于生产,它执行“真正的”Java 代码来读取键盘;第二个可以从代码访问,特别是从您的 JUnit 测试。

使用后者,您的测试可以“输入”任何需要的输入。

添加:

这不是有效的代码,我是凭空输入的!这也只是一种实现方法:gpampara 下面制作您自己的 Streams 的方法也可以。这取决于您的测试需求。

先做一个界面

public interface Keyboard
{
public int getInt() ;
}

然后是“真正的”实现:

public class RealKeyboard
implements Keyboard
{
// I haven't done Java keyboard reading in ages, so this is
// likely not how to do it, but you should get the idea
private BufferedReader __r ;

public RealKeyboard( BufferedReader r )
{
__r = r ;
}

public int getInt()
{
// whatever you need to do with __r
}
}

然后这是一种可能的测试实现:

public class TestKeyboard
implements Keyboard
{
private int __value ;

public TestKeyboard( int value )
{
__value = value ;
}

public int getInt()
{
return __value ;
}
}

这当然会始终返回相同的值,这可能不是您想要的。您可以使用 setInt() 方法进行实现,以便您的测试类可以在测试期间设置值,或者您可以将值列表传递给构造函数,然后按顺序返回每个值。取决于您需要测试的内容。

然后您的调用代码只需传递其中之一:

public class SomeConsumer
{
private Keyboard __k ;

public SomeConsumer( Keyboard k )
{
__k = k ;
}

// use it in your methods...
}

您可以使用 Spring 来注入(inject)它,或者只是将它硬编码到您的“生产”代码中。但是在您的测试中,您可以传递其中一个测试实现。

关于java - 如何在Java中测试(junit)输入键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com