Страницы

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

пятница, 13 марта 2020 г.

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

#java #юнит_тесты #тестирование #junit


Имеется тестовое задание:


  Дан файл вида

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 корректность
работы функций на основании тестовых равенств в файле 
?

Прошу вас высказать свое понимание задачи.
    


Ответы

Ответ 1



Я бы написал скрипт (хотя, если там несколько строк, то можно и ручками), который на основании исходного файла нагенерирует 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 "}\n";

Ответ 2



Я бы сделал 4 теста по 1 на каждую операцию (+ - / *) Каждый тест бы выбирал из файла строки со своими операциями и проверял правильность результата. Но конечно задача очень странная.

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

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