2015-10-18 3 views
-1

Я использую этот проект (https://github.com/royclarkson/spring-rest-service-oauth) как сервер для моего проекта. Но я просто хочу добавить некоторые атрибуты внутри класса User, я также изменил import.sql. Я изменил «имя» (сделал рефакторинг для геттера и сеттера тоже) до «firstName» и добавил другое «lastName» (и добавьте соответствующие получатели и сеттеры).Изменить атрибут в объекте breaks project

@NotEmpty 
private String firstName; 
@NotEmpty 
private String lastName; 

И я также изменил import.sql на:

insert into user(id, firstName, lastName, login, password) values (1,'Roy','Smith','roy','pass'); 

insert into user(id, firstName, lastName, login, password) values (2,'Craig','Jones','craig','pass'); 

insert into user(id, firstName, lastName, login, password) values (3,'Greg','Robinson','greg','pass'); 

Тогда, когда я запускаю тесты, все они не смогли! Например, если я бегу «greetingAuthorized» тестовый случай внутри GreetingControllerTest.java, я получаю эту ошибку:

java.lang.AssertionError: Status expected:<200> but was:<400> 
    at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:60) 
    at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:89) 
    at org.springframework.test.web.servlet.result.StatusResultMatchers$10.match(StatusResultMatchers.java:653) 
    at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:152) 
    at org.radiation.therapy.integration.test.GreetingControllerTest.getAccessToken(GreetingControllerTest.java:96) 
    at org.radiation.therapy.integration.test.GreetingControllerTest.greetingAuthorized(GreetingControllerTest.java:112) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:73) 
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82) 
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:73) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:224) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:83) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

Почему ?? Я просто изменяю некоторые атрибуты в User, мои тестовые примеры не могут выполняться. Я перезапустил сервер. Есть ли какие-то конфигурации, которые я пропустил?

Обновление: я поместил свой исходный код внутри: https://www.dropbox.com/s/kwy9pmvjk5p0ssc/spring-rest-service-oauth-master_problem.zip?dl=0 Эта версия только изменила имя на «firstName» и обнаружила проблему alr. Пожалуйста, помогите .... :(

+0

и как изменение атрибута относится к тому, что не удалось тест? потому что вы не представляете никакой информации, о которой люди могут относиться ... что такое сравнение 200, 400 и как это связано с этим «атрибутом»? –

+0

Эта строка не работает: строка 95: '.andExpect (status(). IsOk())'. Как вы можете видеть, вы ожидаете, что ответ будет OK, а это 200, но вы получите 400 Bad Request. Это может помочь вам в отладке. – Ish

+0

@NeilStockton Cos, прежде чем менять его, все тесты прошли. Я вернулась назад и много раз пробовала. – yeeen

ответ

-1

Cos прописные буквы (например, FirstName) не являются приемлемыми в столбце базы данных спящего режима. Либо у вас это

@NotEmpty 
private String first_name; 

Или у определить имя столбца явно

@Column(name = "first_name", nullable = false) 
private String firstName; 

Как и в этом примере: http://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-part-two-crud/

Update: цитата из моего друга, которого я спросил

"Mostly databases have case-insensitive object names so capital letters make no sense. Hibernate converts capital letter to '_ + small letter'. Hence what you see. You need to know this when you start writing SQL queries."

Я также искал в Интернете по поводу этого: hibernate column name issues и https://www.genuitec.com/forums/topic/hibernate-generated-classes-don-t-keep-upper-case-letters/

+0

Очевидно, заглавные буквы приемлемы в именах столбцов базы данных, и все РСУБД имеют конкретные случаи по умолчанию, а требования к котировке –

+0

@NeilStockton, но я как-то использую заглавные буквы, разрывает программу. Я использую все маленькие шапки. – yeeen

+0

только вы знаете свою базу данных, только вы знаете фактическое сообщение об ошибке (из JDBC, которое использует поставщик JPA), только у вас есть журналы для вашего провайдера JPA. Дело в том, что СУРБД допускает смешанный случай (часто с кавычками) –

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