Страницы

Поиск по вопросам

суббота, 1 июня 2019 г.

Как вы истрактовали бы постановку тестовой задачи?

Имеется тестовое задание:
Дан файл вида
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 "}
";

Комментариев нет:

Отправить комментарий