我被迫使用NI Lab Windows CVI,我很乐意使用TDD。但是,我找不到该IDE的任何testframeworks。有没有已知的解决方案?
答案 0 :(得分: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"
使用theese include语句应允许您运行此代码:
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
答案 1 :(得分:1)
我们也在这里使用CUnit和CMock(ThrowTheStick)。使用cvi,您甚至可以自动执行ruby脚本以执行test_runner构建器,例如
"%RUBY_HOME%\bin\ruby.exe" "%UNITY_HOME%\auto\generate_test_runner.rb"
Test_TestCycleFSM.c 在您的预构建步骤中。您可能需要两次编译项目以生成源文件并进行编译。
毕竟,CUnit似乎是 中的测试套件。