- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在处理一个新项目,我想在屏幕上显示一些数据。我开始使用 TDD,这对我来说是新的,但我喜欢这个想法并且到目前为止相处得很好。
我设置了一个 JFrame,添加了一个 Textarea 并将文本放在那里,但我如何才能正确测试它?或者在我这边的 TDD 上下文中这是错误的想法?我想确定(以 TDD 方式)数据是否正确显示!显示的文本的创建 被测试正确覆盖,但显示 没有。
这是一个完全简化的例子:
public class MyTextDisplay {
public static void main(String[] args) {
JFrame my_frame = new JFrame("DisplaySomeText");
my_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea textArea = new JTextArea(5, 20);
textArea.setEditable(false);
my_frame.add(textArea);
my_frame.setVisible(true);
//this would be in a separate method
textArea.append("Hello World");
}
}
最佳答案
TDD 要求您以不同的方式思考问题。在实际为解决方案编写任何代码之前,您首先要确定要测试的内容以及测试方式。
对于 GUI,这可能会变得非常棘手,老实说,您的 GUI 永远不应包含任何可能位于单独层中的逻辑。例如,显示的值应该来自与 GUI 无关但可以单独测试的对象。这允许您开发与显示( View )分开的主要业务逻辑(模型和 Controller )。这就是 MVC 模式。测试驱动开发只是意味着您在编写代码之前测试您能做的事情,并且随着您添加更多代码,更多测试将开始通过。
我宁愿专注于我的设计,并确保生成文本值的任何内容都按预期工作。 GUI 应该是“哑巴”的,只专注于显示或检索值,很少关心显示的值是否确实正确。
众所周知,GUI 很难使用自动化工具进行测试(正确测试),因此我会尽可能避免这种情况,并尽可能将我的 GUI 与我的实际应用程序分离。然后您可以测试 GUI 一次,以确保它显示它应该显示的内容,并专注于业务逻辑,而不必在 GUI 上进行连续测试,因为您没有接触该代码。
关于java - 如何对 JFrame 进行 TDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647603/
我是一名优秀的程序员,十分优秀!