【问题标题】:C project structure with MakeFile for command-line project with unit testing带有 MakeFile 的 C 项目结构,用于带有单元测试的命令行项目
【发布时间】:2022-07-28 01:10:06
【问题描述】:

我正在开发一个用 C 编写的命令行实用工具。我的目标是使用 Github Actions 和用于自动化测试的单元测试框架来开发该项目。

我有两个问题需要回答:

  • 还有单元测试的项目结构是什么?
  • 如何编写 MakeFile 以包含 src 构建/执行以及单元测试构建/执行?

如果有人能提供 C 项目结构和/或 Makefile 的示例,我将不胜感激。

【问题讨论】:

  • 你了解makefile,你是否意识到除了你自己创建的结构之外,没有必要的结构?
  • CMake 等更高级别的构建工具可能会提供更轻松的单元测试集成。

标签: c unit-testing makefile github-actions project-structure


【解决方案1】:

还有单元测试的项目结构是什么?

任何结构都可以。

如何编写 MakeFile 以包含 src 构建/执行以及单元测试构建/执行?

(GNU) Make 用于从文件(先决条件)构建文件(目标),使用 shell 命令序列(配方)。

对于测试,这通常意味着您通过运行测试来构建测试报告文件,测试的二进制文件是先决条件(以及任何其他测试输入文件)。

# target: prerequisites
#     command
mytool.testreport: mytool.exe
     mytool.exe arg1 arg2 && echo "ok" > mytool.testreport

# alternatively, using automatic variables:
mytool.testreport: mytool.exe
     $< arg1 arg2 && echo "ok" > $@

# There's a convention to have a phony 'test' target for running all tests
.PHONY: test
test: mytool.testreport

# Depending on test framework and command line you may want to delete the report on error:
.DELETE_ON_ERROR: mytool.testreport

命令行调用的具体内容取决于测试框架。

【讨论】:

    猜你喜欢
    • 2013-01-04
    • 1970-01-01
    • 2015-11-21
    • 2014-07-03
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    相关资源
    最近更新 更多