【问题标题】:netbeans cunit tests cases never endnetbeans cunit 测试用例永无止境
【发布时间】:2013-01-23 18:35:00
【问题描述】:

尝试在 NetBeans 上测试我的 C 项目,测试永远不会结束,而输出是:

   Test: testFileOne ...passed   Test: testFileTwo ...passed

 Run Summary:    Type  Total    Ran Passed Failed Inactive
               suites      1      1    n/a      0        0
                tests      2      2      2      0        0
              asserts      8      8      8      0      n/a

 Elapsed time =    0.000 seconds

即使看起来完成了,进度条仍然在值 0.0% 处闪烁。

测试用例都是这样的:

void testMethod() {
     CU_ASSERT(1 == 1);
     //other lines of code..
     CU_ASSERT(0 == 0);
 }

每个函数都有多个 CU_ASSERT。 NetBeans 自动生成的测试代码的一些行为。

命令

make test

从命令行的工作就像一个魅力,并没有问题结束。

有人遇到过这个问题吗?有什么方法可以在不影响我的笔记本电脑的情况下解决它?预先感谢您的每条评论。

【问题讨论】:

  • 只是一个疯狂的猜测:您是否在测试用例中启动了任何在测试本身定期结束时不会结束的线程?
  • 添加 printf 来跟踪执行,看看单元测试是否真的退出了。

标签: c testing netbeans cunit


【解决方案1】:

您可以使用调试器(例如 gdb)来跟踪发生的情况。

这需要将调试标志添加到您的 cunit 代码中。假设您使用的是 gcc,这将是 -g 标志。

使用调试标志编译后,您可以简单地使用调试器启动测试二进制文件,就像调试普通程序一样。

【讨论】:

    【解决方案2】:

    Netbeans 似乎需要某个指令 a 来停止测试套件,而这正是 printf("%%SUITE_FINISHED%% time=0\n");。以下是您的测试应该是什么样子(您使用的是普通的 C 或 CUnit 之类的库):

    #include <stdio.h>
    #include <stdlib.h>
    
    void test1() {
        // do your stuff
    }
    
    int main(int argc, char** argv) {
        printf("%%SUITE_STARTING%% mysimpletest\n");
        printf("%%SUITE_STARTED%%\n");
    
        printf("%%TEST_STARTED%% test1 (mysimpletest)\n");
        test1();
        printf("%%TEST_FINISHED%% time=0 test1 (mysimpletest) \n");
    
        printf("%%SUITE_FINISHED%% time=0\n");
    
        return (EXIT_SUCCESS);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 2021-08-26
      • 2016-06-04
      相关资源
      最近更新 更多