如何使用外部单元测试布局arduino代码文件
我有三个arduino项目的代码文件:如何使用外部单元测试布局arduino代码文件,arduino,avr,googletest,Arduino,Avr,Googletest,我有三个arduino项目的代码文件: main.ino <-- main sketch helper.cpp <-- helper functions, no avr code helper_test.cpp <-- unit test for helpers main.ino您需要创建两个独立的项目。一个项目将包含您的生产代码。它将包含以下文件: main.ino <-- main sketch helper.h <-- header for hel
main.ino <-- main sketch
helper.cpp <-- helper functions, no avr code
helper_test.cpp <-- unit test for helpers
main.ino您需要创建两个独立的项目。一个项目将包含您的生产代码。它将包含以下文件:
main.ino <-- main sketch
helper.h <-- header for helper functions
helper.cpp <-- implementation for helper functions
main.ino您需要创建两个独立的项目。一个项目将包含您的生产代码。它将包含以下文件:
main.ino <-- main sketch
helper.h <-- header for helper functions
helper.cpp <-- implementation for helper functions
main.ino就让他把它包括进去,但把所有的代码都排除在外。我的意思是:
File test_enablers.h
#define INCLUDE_HELPER_TEST
File helper_test.cpp
#include "test_enablers.h"
#ifdef INCLUDE_HELPER_TEST
... your helper test code
#endif /* INCLUDE_HELPER_TEST */
您可以添加任意数量的测试文件;只需在.h文件中添加标志
如果要禁用测试文件,只需注释#define
,文件将不会被编译
如果您想排除某些其他文件中的某些代码(例如,main中的setup和loop函数,因为您已经在测试中实现了它),只需编写
File main.ino
#include "test_enablers.h"
#ifndef INCLUDE_HELPER_TEST
... your production setup and loop
#endif /* INCLUDE_HELPER_TEST */
(注意,ifndef
代替了ifdef
)让他把它包括进去,但排除所有的代码。我的意思是:
File test_enablers.h
#define INCLUDE_HELPER_TEST
File helper_test.cpp
#include "test_enablers.h"
#ifdef INCLUDE_HELPER_TEST
... your helper test code
#endif /* INCLUDE_HELPER_TEST */
您可以添加任意数量的测试文件;只需在.h文件中添加标志
如果要禁用测试文件,只需注释#define
,文件将不会被编译
如果您想排除某些其他文件中的某些代码(例如,main中的setup和loop函数,因为您已经在测试中实现了它),只需编写
File main.ino
#include "test_enablers.h"
#ifndef INCLUDE_HELPER_TEST
... your production setup and loop
#endif /* INCLUDE_HELPER_TEST */
(注意,ifndef
代替了ifdef
)我不认为Arduino编译器(和相关系统)是用来处理单元测试的,我必须构建我在中写过的
为了实现这一点,您需要将大部分代码放在一个库中,单元测试将存储为该库的一个子目录,名为test/
。您可以通过将它们放在库的examples/
目录中来测试完整的草图,但只有编译可以在这些库上进行测试。我不认为Arduino编译器(和相关系统)是为处理单元测试而设置的,我必须构建我在中写过的
为此,您需要将大部分代码放在库中,单元测试将存储为该库的一个子目录,名为test/
。您可以将完整的草图放在库的examples/
目录中进行测试,但只有编译可以在这些草图上进行测试。如果您想取消编译it测试,只需创建将要执行一项任务的代码。您可以购买逻辑分析仪并检查端口的输出,以查看是否传递了正确的信号。由于Arduinos的性质,在大多数情况下,单元测试必须以不同的方式进行。希望这能有所帮助。如果您想进行单元测试,只需创建将要执行的代码即可可爱的一个任务。你可以购买一个逻辑分析仪,检查端口的输出,看看是否传递了正确的信号。由于Arduinos的性质,在大多数情况下,单元测试必须以不同的方式进行。希望这会有所帮助。这比在helper_test.cpp中注释所有内容好吗?@u实际上,它们是相同的,但这是唉,它更具可读性,更“正确”这比在helper_test.cpp中注释所有内容好吗?@ʞɔıu实际上它们是一样的,但这样它更具可读性,更“正确”我从web下载或参与的每个项目(使用单元测试)将测试与生产代码分开。使用define一开始可能看起来很吸引人,但您的项目会增加,带有测试的cpp
文件的数量也会增加。包含几十个代码完全被排除在外的cpp
文件是没有意义的。更不用说您必须不断添加/删除该define以排除ude/在您的构建中包含测试。我目前正在考虑相同的问题。我希望构建依赖于我自己的库的草图,这些库与主草图分离,并生活在一个可以进行单元测试的项目中。我认为库项目应该包含一个子文件夹,可以直接从Ardui指向没有,但是整个项目增加了GTestand其他测试,所以在这个项目的上下文中,你可以测试这个库,模拟任何硬件块。我现在正在这里通过一个例子来处理:你解决了你的问题吗?如果有帮助的话,考虑接受其中一个答案。我从Web上下载的每一个项目。或处理(使用单元测试)将测试与生产代码分开。使用define一开始可能看起来很吸引人,但您的项目会增加,带有测试的cpp
文件的数量也会增加。包含几十个代码完全被排除在外的cpp
文件是没有意义的。更不用说您必须不断添加/删除该define以排除ude/在您的构建中包含测试。我目前正在考虑相同的问题。我希望构建依赖于我自己的库的草图,这些库与主草图分离,并生活在一个可以进行单元测试的项目中。我认为库项目应该包含一个子文件夹,可以直接从Ardui指向没有,但是整个项目增加了GTestand其他测试,所以在这个项目的上下文中,你可以测试这个库,模拟任何硬件块。我现在在这里通过一个例子来处理:你解决了你的问题吗?如果有帮助的话,考虑接受其中的一个答案。