使用Makefile进行单元测试

时间:2014-08-04 09:26:52

标签: unit-testing makefile

我想做以下事情:

start:
    @echo start the server

stop:
    @echo stop the server

test1: start stop
    @echo do test1

test2: start stop
    @echo do test2

test-all: test1 test2

但我有两个问题:

  1. 如何在makefile中指定pre-post-rules? makefile中的所有规则似乎都是pre-。在这种情况下,我希望在每次测试结束时运行stop
  2. 如何强制make运行startstop规则,即使它已经运行过了?需要为单个测试的每个执行启动/停止周期,这样当我运行make test-all时,会为每个<{1}}调用startstop测试,而不仅仅是第一次需要它们的测试一次。

1 个答案:

答案 0 :(得分:1)

test1:
    @echo start the server
    @echo do test1
    @echo stop the server

test2:
    @echo start the server
    @echo do test2
    @echo stop the server

test-all: test1 test2

如果冗余太多(例如,如果你有很多单元测试),你可以定义一个"canned" recipe

define start-stop
    @echo start the server
    $(1)
    @echo stop the server
endef

test1:
    $(call start-stop, @echo do test 1)

test2:
    $(call start-stop, @echo do test 2)