作家
登录

用C语言对Gtk+应用进行功能测试

作者: 来源: 2017-10-13 10:22:01 阅读 我要评论


用C说话对Gtk+应用进行功能测试

这个简单教程教你若何测试你应用的功能。

主动化测试用来包管你法度榜样的质量以及让它以预想的运行。单位测试只是检测你算法的某一部分,而并不重视各组件间的适应性。这就是为什么会有功能测试,它有时也称为集成测试。

功能测试简单地与你的用户界面进行交互,无论它是网站照样桌面应用。为了展示功能测试若何工作,我们以测试一个 Gtk+ 应用为例。为了简单起见,这个教程里,我们应用 Gtk+ 2.0 教程的示例。

基本设置

对于每一个功能测试,你平日须要定义一些全局变量,比如 “用户交互时延” 或者 “掉败的超不时光”(也就是说,如不雅在指定的时光内一个事宜没有产生,法度榜样就要中断)。

  1. #define TTT_FUNCTIONAL_TEST_UTIL_IDLE_CONDITION(f) ((TttFunctionalTestUtilIdleCondition)(f)) 
  2. #define TTT_FUNCTIONAL_TEST_UTIL_REACTION_TIME (125000) 
  3. #define TTT_FUNCTIONAL_TEST_UTIL_REACTION_TIME_LONG (500000) 
  4. typedef gboolean (*TttFunctionalTestUtilIdleCondition)(gpointer data); 
  5. struct timespec ttt_functional_test_util_default_timeout = { 
  6.   20, 
  7.   0, 
  8. }; 

如图所示,我们假设,填满第一行,玩家 A 就赢,因为玩家 B 没有留意,只填充了第二行。

如今我们可以实现我们本身的超时函数。这里,为了可以或许获得期望的延迟,我们采取 usleep 函数。

  1. void 
  2. ttt_functional_test_util_reaction_time() 
  3.   usleep(TTT_FUNCTIONAL_TEST_UTIL_REACTION_TIME); 
  4. void 
  5. ttt_functional_test_util_reaction_time_long() 
  6.   usleep(TTT_FUNCTIONAL_TEST_UTIL_REACTION_TIME_LONG); 

直到获得控制状况,超时函数才会推迟履行。这对于一个异步履行的动作很有赞助,这也是为什么采取这么长的时延。

  1. void 
  2. ttt_functional_test_util_idle_condition_and_timeout( 
  3.      TttFunctionalTestUtilIdleCondition idle_condition, 
  4.      struct timespec *timeout, 
  5.      pointer data) 
  6.   struct timespec start_time, current_time
  7.   clock_gettime(CLOCK_MONOTONIC, 
  8.                 &start_time); 
  9.   while(TTT_FUNCTIONAL_TEST_UTIL_IDLE_CONDITION(idle_condition)(data)){ 
  10.     ttt_functional_test_util_reaction_time(); 
  11.     clock_gettime(CLOCK_MONOTONIC, 
  12.                   &current_time); 
  13.     if(start_time.tv_sec + timeout->tv_sec < current_time.tv_sec){ 
  14.       break; 
  15.     } 
  16.   } 
  17.   ttt_functional_test_util_reaction_time(); 

与图形化用户界面交互

为了模仿用户交互的操作, Gdk 库 为我们供给了一些须要的函数。要完成我们的工作,我们只须要如下 3 个函数:

  • gdk_display_warp_pointer()
  • gdk_test_simulate_button()
  • gdk_test_simulate_key()

举个例子,为了测试按钮点击,我们可以这么做:

  1. gboolean 
  2. ttt_functional_test_util_button_click(GtkButton *button) 
     1/4    1 2 3 4 下一页 尾页

      推荐阅读

      商业智能简史,一切要从1865年说起

    1865年,理查德&middot;米勒&middot;德文斯(Richard Millar Devens)在《贸易妙闻百科全书》(Cyclop&aelig;diaof Commercial and Business Anecdotes)中提出了&ldquo;贸易智能&rdquo;(BI>>>详细阅读


    本文标题:用C语言对Gtk+应用进行功能测试

    地址:http://www.17bianji.com/lsqh/37870.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)