【发布时间】:2011-12-06 18:10:31
【问题描述】:
所以我有兴趣对与内核模块交互的库进行一些单元测试。为了正确地做到这一点,我想确保在每次测试结束时关闭文件句柄之类的东西。这似乎真正可行的唯一方法是在每个测试用例上使用 fork() 。 是否有任何预先存在的单元测试框架可以自动执行此操作?
我期望的一个例子如下:
TEST() {
int x = open("/dev/custom_file_handle");
TEST_ASSERT_EQUAL(x, 3);
}
TEST() {
int y = open("/dev/other_file_handle");
TEST_ASSERT_EQUAL(x, 3);
}
特别是,在每次测试后,文件句柄都会关闭,这意味着文件描述符在每次测试后应该是相同的值。
我实际上并没有测试文件描述符的值。这只是一个简单的例子。在我的特殊情况下,任何时候都只允许一个用户打开文件描述符。
这是针对 Linux 平台的,但跨平台的东西会很棒。
【问题讨论】:
-
stackoverflow.com/a/267854/390913 "如果库正在打开你不知道的文件,你怎么知道他们在分叉后不需要它们?"
-
@perreal:我不确定这在这里如何应用。我希望每个单元测试都具有相同的初始状态。通过在每次测试之前进行分叉,可以确保这一点。库可能进行了一些静态初始化,但这对于所有派生的实例都是相同的。
标签: c++ unit-testing