gpt4 book ai didi

unit-testing - 如何使自动工具测试读取文件?

转载 作者:行者123 更新时间:2023-12-04 05:10:37 24 4
gpt4 key购买 nike

我的 autotools 项目有几个单元测试。
这些测试之一( filereader )需要读取文件( data/test1.bin )

这是我的文件系统布局:
- libfoo/tests/filereader.c
- libfoo/tests/data/test1.bin

和我的 libfoo/tests/Makefile.am:

AUTOMAKE_OPTIONS = foreign
AM_CPPFLAGS = -I$(top_srcdir)/foo
LDADD = $(top_builddir)/src/libfoo.la

EXTRA_DIST = data/file1.bin

TESTS = filereader
check_PROGRAMS= filereader
filereader_SOURCES = filereader.c

这很好用,只要我在树内构建。
但是,在树外运行测试套件(例如 make distcheck )时, filereader测试再也找不到输入文件了。

这显然是因为只有源树包含输入文件,而不是构建树。

我想知道解决这个问题的规范方法是什么?
  • 将测试文件的目录编译到 unittest ( AM_CPPFLAGS+=-DSRCDIR=$(srcdir) )
  • 将合格的输入文件作为 cmdline 参数传递给测试? (例如 $(builddir)/filereader $(srcdir)/data/file1.bin)
  • 将输入文件从源树复制到构建树? ( cp $(srcdir)/data/file1.bin $(builddir)/data/file1.bin ?一个合适的制定规则应该是什么样的??)
  • 最佳答案

    规范地,解决方案是将文件的路径定义到单元测试中,因此您布局的第一个选项。第二个也是可能的,但它需要使用中间驱动程序脚本。

    我建议避免第三个,但如果你确实想走那条路,请使用 $(LN_S)而不是 cp ;这样可以减少测试的 I/O 负载。

    关于unit-testing - 如何使自动工具测试读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36979167/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com