如何在检查单元测试中设置从文件读取输入的路径?

时间:2017-02-26 17:44:03

标签: c unit-testing makefile autotools

我正在学习使用check来检查我的代码。我的项目设置了autotools,我已经设置了检查设置。

我正在制作的程序是一棵红黑树,我希望能够用于其他项目。对于我的一个测试,我想从文件中读取输入以用作插入树中的测试数据。我在我的测试目录中有一个名为words.txt的文件,我想从中读取。我喜欢将构建树分开。那么如何设置我的makefile将word文件放在正确的位置?那么我可以从运行检查的目录中读取它吗?

以下是一切:

  

项目目录:

├── aclocal.m4
├── autom4te.cache
│   ├── output.0
│   ├── output.1
│   ├── requests
│   ├── traces.0
│   └── traces.1
├── build-aux
│   ├── ar-lib
│   ├── compile
│   ├── depcomp
│   ├── install-sh
│   ├── missing
│   └── test-driver
├── config.h.in
├── config.h.in~
├── configure
├── configure.ac
├── Makefile.am
├── Makefile.in
├── src
│   ├── libredblack.c
│   ├── libredblack.h
│   ├── main.c
│   ├── Makefile.am
│   └── Makefile.in
└── tests
    ├── check_libredblack.c
    ├── Makefile.am
    ├── Makefile.in
    └── words.txt
  

测试/ Makefile.am:

TESTS = check_libredblack
check_PROGRAMS = check_libredblack
check_libredblack_SOURCES = check_libredblack.c $(top_builddir)/src/libredblack.h
check_libredblack_CFLAGS = @CHECK_CFLAGS@
check_libredblack_LDADD = $(top_builddir)/src/libredblack.a @CHECK_LIBS@

1 个答案:

答案 0 :(得分:0)

一种方法是让Makefile告诉测试程序在哪里找到它。

添加到您的测试程序CPPFLAGS之类的-DWORDS_LOCATION="\"$(top_srcdir)/tests/data/words.txt\"",然后数据文件的路径将作为字符串在您的程序中使用,在宏WORDS_LOCATION中定义。