1

我被迫使用 NI Lab Windows CVI,我很想使用 TDD。但是我找不到该 IDE 的任何测试框架。有没有已知的解决方案?

4

2 回答 2

1

我刚刚和 NI 的某个人谈过。

NI Lab View 的单元测试框架是完全不同的。

NI 目前没有解决方案。过去,有些人使用TestComplete解决了他们的问题——另一条路线可能是使用CUnit

编辑:

将 CUNIT 与 CVI 一起使用非常简单 - 尽管您仍然面临一些语言障碍:

#include "CUError.h"
#include "CUError.c"
#include "CUnit.h"
#include "MyMem.h"
#include "MyMem.c"
#include "TestDB.h"
#include "TestDB.c"
#include "TestRun.h"
#include "TestRun.c"
#include "Util.h"
#include "Util.c"
#include "Automated.h"
#include "Automated.c"

使用这些包含语句应该允许您运行此代码:

static void testFail(void)
{
        CU_ASSERT(0);
}

//Suite Definitions
static CU_TestInfo tests_GenList[] = {
  { "Should Fail", testFail },
    CU_TEST_INFO_NULL,
};

static CU_SuiteInfo suites[] = {
  { "Generic List Suites",  NULL, NULL, tests_GenList },
    CU_SUITE_INFO_NULL,
};

void AddTests(void)
{
  assert(NULL != CU_get_registry());
  assert(!CU_is_test_running());

    /* Register suites. */
    if (CU_register_suites(suites) != CUE_SUCCESS) {
        fprintf(stderr, "suite registration failed - %s\n",
            CU_get_error_msg());
        exit(EXIT_FAILURE);
    }
}

int main (void)
{
    CU_initialize_registry();
    AddTests();
    CU_set_output_filename("Result\\TestAutomated");
    CU_list_tests_to_file();
    CU_automated_run_tests();
    CU_cleanup_registry();
    return 0;
}

还将这些文件复制到您的 Result 目录中:

CUnit-List.dtd
CUnit-List.xsl
CUnit-Run.dtd
CUnit-Run.xsl
md2xml.pl
Memory-Dump.dtd
Memory-Dump.xsl
于 2010-12-15T14:55:56.627 回答
1

我们还在这里使用带有 CMock ( ThrowTheStick ) 的 CUnit。使用 cvi,您甚至可以自动化 ruby​​ 脚本来执行 test_runner 构建器,例如

"%RUBY_HOME%\bin\ruby.exe" "%UNITY_HOME%\auto\generate_test_runner.rb"  

Test_TestCycleFSM.c 在您的预构建步骤中。您可能必须编译您的项目两次以生成源文件然后编译它。

毕竟,CUnit 似乎是 C 中测试套件。

于 2012-12-04T09:27:18.283 回答