3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 18
1

Объект треугольник и JUnit тест

05.09.2010, 22:08. Показов 6180. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется интерфейс:
Java
1
2
3
4
5
public interface Triangle {
int getLen1();
int getLen2();
int getLen3();
}
где методы getLen возвращают длины сторон треугольника в виде 3 чисел
также есть метод возвращающий треугольник:
Java
1
2
3
4
5
public final class TriangleProvider {
public static Triangle getTriangle() {
...
}
}
нужно написать junit тест проверяющий метод getTriangle() на то что он действительно возвращает треугольник.

Мне не совсем понятно, что значит метод возвращающий треугольник? что именно и в каком виде он возвращает?
и как это проверить при помощи junit теста?
я так понимаю нужно использовать свойство треугольника о том, что сумма двух его сторон больше третьей, но где это прописать не представляю.
Подскажите пожалуйста.
Заранее Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2010, 22:08
Ответы с готовыми решениями:

JUnit как написать тест
Товарищи, доброго времени суток. Хочу научиться правильно писать. И наткнулся на тестирование,...

Почему фейлится тест. JUnit
Начал изучать JUnit Пишу класс, который хочу потестить public class Calc { public int...

JUnit, не работает общий тест
Почему все, тесты по отдельности работают, но стоит начать общий тест, всего класса, то почти не...

JUnit тест для метода int -> String
Хочу написать Unit-тест для метода Foo public class MyService { public String Foo(int value){...

6
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
06.09.2010, 13:40 2
kirrill, добавьте метод в класс Triangle
Java
1
2
3
public boolean isTriangle() {
    return ((a + b > c) && (b + c > a) && (c + a > b));
}
А потом в тесте после получения объекта типа Triangle напишите такую строку
Java
1
assertTrue(triangle.isTriangle());
где triangle - это ваш объект
1
3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 18
06.09.2010, 14:39  [ТС] 3
Как то так?
Java
1
2
3
4
5
public interface Triangle {
int getLen1();
int getLen2();
int getLen3();
}
Java
1
2
3
4
5
6
7
8
9
10
11
public final class TriangleProvider {
public static Triangle getTriangle() {
...
}
public boolean isTriangle() {
 
    Triangle t = new Triangle(); 
    //не знаю можно ли так делать?
    return ((t.getLen1() + t.getLen2() > t.getLen3()) && (t.getLen2() + t.getLen3() > t.getLen1()) && (t.getLen3() + t.getLen1() > t.getLen2()));
}
}
а тест:
Java
1
2
3
4
5
6
7
8
9
10
11
import org.junit.Test;
import static org.junit.Assert.assertEquals;
 
public class TestTriangle {
    @Test
    public void getTriangleTest() {
       TriangleProvider  tp = new TriangleProvider();
        assertTrue(tp.isTriangle());
 
    }
}
Только я не понял метод isTriangle() надо было добавить в класс TriangleProvider или в интерфейс Triangle?
Теперь получается, что мы проверяем метод isTriangle(), а не getTriangle() как было нужно...
И нельзя ли не модифицируя исходный код написать всё в junit тесте?
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
06.09.2010, 14:54 4
В класс TriangleProvider и интерфейс Triangle, я не заметил что это интерфейс

Цитата Сообщение от kirrill Посмотреть сообщение
Java
1
Triangle t = new Triangle();
Тогда следующая строка теряет весь смысл. Имелось в виду, что вместо a, b и c будут поставлены this.сторона1 и т.д.

Тест вообще-то пишеться отдельным файлом, а не в этом классе. Если не хотите добавлять новую функциональность, то через геттеры запишите это условие в assertTrue
1
3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 18
06.09.2010, 15:32  [ТС] 5
т.е. должен получиться такой тест?

Java
1
2
3
4
5
6
7
8
9
10
11
import org.junit.Test;
import static org.junit.Assert.assertEquals;
 
public class TestTriangle {
    @Test
    public void getTriangleTest() {
        Triangle  t = new Triangle();
        assertTrue((t.getLen1() + t.getLen2() > t.getLen3()) && (t.getLen2() + t.getLen3() > t.getLen1()) && (t.getLen3() + t.getLen1() > t.getLen2()));
 
    }
}
или я что то опять не так понял?
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
06.09.2010, 22:50 6
kirrill, а зачем вы пишете этот тест? Вы создали объект треугольник, а вы задали ему стороны? Такой тест нужен для того, чтобы проверить результат неких действий над объектом, а не результат работы конструктора.
Каждый тестовый метод должен начинаться со слова test
1
3 / 3 / 0
Регистрация: 13.07.2009
Сообщений: 18
07.09.2010, 01:37  [ТС] 7
Спасибо за помощь!
0
07.09.2010, 01:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2010, 01:37
Помогаю со студенческими работами здесь

JUnit тест при ограничении java.io.FilePermission
На собеседовании на позицию Java Developer дали в качестве задания написать код, который должен...

Реализация разных @After для тест-методов в Selenium, JUnit
Здраствуйте, изучаю автоматизацию под Selenium, знакомлюсь с JUnit. Возник вопрос. К примеру у...

Junit тест NullPointerException
Подскажите, пожалуйста, как кинуть эксепшн с месседжем до того, как эксепшн появится сам во время...

Не работает JUnit тест
Всем привет, я создаю консольную программу, система заявок. Стал писать тесты на основные методы, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru