使用输入参数的Console + GUI应用程序

时间:2014-03-05 16:50:13

标签: testing user-interface console automation

我有一个问题,我认为难以解释而不是回答......我会尝试。

有几个软件可以在终端上运行,具有各种输入参数(-h,-a,...),其中一个参数运行软件GUI。目前,没有真正的软件出现在我的脑海中,对不起......让我们以my_software为例

> my_software -h
This is my_software version 1.0
Options:
-h    Display this help
-a    Do processing 1
-b    Do processing 2
-g    Start software GUI

因此,如果我从控制台调用该软件,我可以让它通过广告输入参数处理1或2。此外,我可以使用-g启动令人震惊的GUI,并使用按钮或其他任何方式处理1或2。

问题:如何实现这样的目标?

我在MS论坛上看到了一些解决方案(我现在正在使用C ++和VIsual Studio,但是“通用”方法提示可以),其中一个创建一个Form应用程序但是从命令行开始,并使用给定的命令打开表单。好像没问题。唯一的问题是:在这种情况下,启动后,控制台和GUI都可见,还是只选择一个?

我想要的是能够使用命令行参数重现GUI的行为,因此可以使用命令行参数重现GUI的每个按钮/功能。这主要是为了能够自动化GUI事件的一些测试。附带问题:它是否有任何意义?

我认为涉及一些MVC设计。程序功能与用户界面分离,因此控制台和GUI可以进行相同的控制器调用。我对MVC不太熟悉,但我认为它涉及到这种情况。正确?

我希望一切都清楚。

感谢您的帮助!

MIX

编辑:一个很好的例子可以是VLC。它从众所周知的GUI开始,但它也可以从控制台使用(https://wiki.videolan.org/VLC_command-line_help/)。

1 个答案:

答案 0 :(得分:0)

我在Qt中做了这样的事情

#include "mainwindow.h"
#include <QApplication>

int RunConsole(int argc, char *argv[])
{
  if(strcmp(argv[1], "-t") == 0)
  {
    printf("Testing!\n");
    return 0;
  }
  else
  {
    printf("Dunno how to process option %s...\n", argv[1]);
    return 1;
  }
}

int RunGUI(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MainWindow w;
  w.show();
  return a.exec();
}

int main(int argc, char *argv[])
{
  int ret;
  if(argc > 1)
  {
    ret = RunConsole(argc, argv);
  }
  else
  {
    ret = RunGUI(argc, argv);
  }
  return ret;
}

目前没有控制GUI /控制台的逻辑。顺便说一句,它似乎为应用程序启动部分做了诀窍。

您如何看待这种方法?

很快控制逻辑......