Имеется тестовое задание:
Дан файл вида
operand1;operand2;operation;result
operand1;operand2;operation;result
operand1;operand2;operation;result
operand1;operand2;operation;result
Каждая строка описывает арифметическое действие.
operand1 и operand2 - операнды, целые числа
operation - арифметическое действие + - / *
result - результат операции operation над operand1 и operand2
В файле могут содержаться любые значения полей
Требуется
Реализовать юнит (JUnit) тесты арифметических действий.
Каждое действие должно выглядеть в отчете как отдельный тестовый сценарий
Конец задания
Я понимаю, как написать тесты JUnit, но не понимаю, что именно тестируется в данном случае.
Правильно ли я считаю, что нужно сначала написать код, который парсит переменные, 4 функции для разных арифметических действий, а потом проверять с помощью JUnit корректность работы функций на основании тестовых равенств в файле
?
Прошу вас высказать свое понимание задачи.
Ответ
Я бы написал скрипт (хотя, если там несколько строк, то можно и ручками), который на основании исходного файла нагенерирует Java файл с тестами. То есть, на каждую строку исходного файла будет генерировать что то вида
@Test
public void test1() {
int actual = operand1 operationoperand2;
int expect = result;
assertEquals(expect , actual);
}
ну м конечно несколько строк "обвязки" для всего этого, что бы модуль был "компилируемый".
В более навороченном виде я бы добалял проверку на 0 для operand2 если operation равно /
UPD
Вот на коленке на perl сделать за минут 5, для собеседования считаю самое оно
#!/usr/bin/perl
use strict;
use warnings;
print '
import junit.framework.*;
public class JavaTest extends TestCase {
protected void setUp(){
}
';
my $i = 1;
while (my $line = <>) {
chomp $line;
my ($op1, $op2, $oper, $result) = split /;/, $line;
print <<"ONE_TEST";
\@Test
public void test$i() {
int actual = $op1 $oper $op2;
int expect = $result;
assertEquals(expect, actual);
}
ONE_TEST
$i += 1;
}
print "}
";
Комментариев нет:
Отправить комментарий