Как использовать файлы .in и .out для тестирования в среде unix?

StackOverflow https://stackoverflow.com//questions/23020191

  •  21-12-2019
  •  | 
  •  

Вопрос

У меня есть программа на C++ и несколько файлов .in и .out для предварительного тестирования.Мне было интересно, как выполнить мою программу на C++ и передать в нее эти данные.

Это было полезно?

Решение

Я предполагаю, что у вас есть список файлов типа test0.in и соответствующий test1.out.Возможно, вам нужен такой Makefile:

#Put rules/variables to actually make the program

SRC = test.cpp
TARGET = program

INPUTS = $(shell ls *.in)
OUTPUTS = $(patsubst %.in, %.out, $(INPUTS))
TESTS = $(patsubst %.in, %.test, $(INPUTS))

#This build rule is just for showcase.  You will probably need your own, more sophisticated build rules
$(TARGET): $(SRC)
    g++ $^ -o $@ -std=c++11

.PHONY: test
test: $(TESTS)

%.test : %.in %.out $(TARGET)
    @./$(TARGET) < $*.in > $@;
    @if cmp -s $@ $*.out; then \
        echo "PASS: $*"; \
    else \
        echo "FAIL: $*"; \
    fi
    @rm $@

Затем просто введите make test -j для многопоточного тестирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top