2013-05-27 5 views
0

Я делаю учебник о том, как использовать метод Expected Exception для исключения исключений. У меня есть 2 вопроса для кода.Junit catch Ожидаемое исключение

  1. Я использовал одиночные кавычки вместо двойных кавычек в строке, показанной ниже, сообщение об ошибке говорит «Недопустимый символ константы» exception.expectMessage(containsString('invalid age'));

    2. Код, выполняемый штраф в Eclipse, но на странице консоли не отображается сообщение в классе. Должен ли я использовать ключевое слово 'extends' для расширения класса Person внутри класса personTest?

    Пожалуйста, сообщите мне, почему использование одиночной кавычки вызывает ошибку и как изменить мой код, чтобы я мог увидеть сообщение об исключении из класса Person при выполнении кода в классе testPerson. Благодаря!

код Учебник:

public class Person { 
private final String name; 
private final int age; 
public Person(String name, int age){ 
    this.name =name; 
    this.age = age; 
    if (age <= 0){ 
     throw new IllegalArgumentException("Invalid age: " + age); 
    } 
} 

} 

import static org.hamcrest.Matchers.*; 
import static org.junit.Assert.*; 
import org.junit.Rule; 
import org.junit.rules.ExpectedException; 
import org.junit.Test; 

public class personTest { 
    @Rule 
    public ExpectedException exception = ExpectedException.none(); 

    @Test 
    public void testExpectedException(){ 
    exception.expect(IllegalArgumentException.class); 
    //exception.expectMessage(containsString('invalid age')); 
    exception.expectMessage(containsString("Invalid age")); 

    new Person("Joe", -1); 
    } 
    } 

ответ

1

Струны

'недействителен возраст' является незаконным в Java. Одиночные кавычки используются для одного символа. Как вы заметили, вы должны использовать «недопустимый возраст», чтобы сделать Java счастливым в отношении синтаксиса.

Консоль

поведение является правильным. JUnit ловит исключение, поэтому вы не видите его на консоли.

Конвенция

Java конвенции заключается в использовании ГорбатыйРегистр для названий класса. Начиная с прописной буквы. Поэтому было бы лучше, если бы ваш класс был назван PersonTest.

+0

Jeanne благодарит за ответ, чтобы показать мне правильный синтаксис, почему консоль не отображает сообщение об ошибке и правильное соглашение об именах в Java – user2061466

Смежные вопросы