2015-11-30 3 views
2

Почему не выполняется следующее испытание? Не должно быть assertTrue(true)?Простой тест JUnit assertTrue (true) не работает

package a.a.a; 

import static org.junit.Assert.*; 
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.forwardedUrl; 
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 

import org.aspectj.lang.annotation.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.test.annotation.DirtiesContext; 
import org.springframework.test.annotation.Timed; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import org.springframework.test.context.web.WebAppConfiguration; 
import org.springframework.test.web.servlet.MockMvc; 
import org.springframework.test.web.servlet.setup.MockMvcBuilders; 
import org.springframework.web.context.WebApplicationContext; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = {ConfigurationClass.class}) 
@WebAppConfiguration 
public class JUnitConfigurationClass { 

    @Autowired 
    WebApplicationContext wac; 
    MockMvc mockMvc; 

    @Before(value = "") 
    public void setup() { 
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); 
    } 

    @Test 
    public void init() { 
     assertTrue(true); 
    } 
} 

Стек трассировки следующим образом:

java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig 
    at org.springframework.test.context.web.AbstractGenericWebContextLoader.configureWebResources(AbstractGenericWebContextLoader.java:200) 
    at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:127) 
    at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:60) 
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:109) 
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:261) 
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98) 
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116) 
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83) 
    at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:183) 
    at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:123) 
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:228) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:230) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:249) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89) 
    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:70) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:193) 
    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) 
Caused by: java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 32 more 
+2

Вопрос: Как вы думаете, тест даже получил * называется *? В: Что произойдет, если вы назовете свой и проверьте только что-то, кроме «init()»? В: Какую IDE вы используете для запуска теста (ов)? Затмение? – paulsm4

+0

Опубликовать сообщение об ошибке для вашего отказа. Все остальное просто догадывалось. –

+0

Это весной. Im с использованием Sprimg mvc 4.2.3. Переименование вещей, похоже, не помогло. Я также не знал, что у юнита даже была трассировка стека. Добавил его в мой оригинальный пост. – Arfs

ответ

1

Утверждение не сработало, это будет «AssertError», но при тестировании вашего подразделения было исключено исключение. В этом случае java.lang.NoClassDefFoundError. Это происходит, когда у вас нет класса в вашем пути к классам. Недопустимый класс: javax.servlet.SessionCookieConfig. Является ли API сервлета в вашем классе?

+0

Оказывается, я просто должен был добавить \t \t \t \t \t org.springframework \t \t \t весна-тест \t \t \t $ {org.springframework-версия} \t \t до POM.xml. Все работает сейчас! – Arfs

1

Что такое @Before аннотацию AspectJ должен делать? Я думаю, что init() не вызывается раньше, поэтому mockMvc не строится. Вместо этого вы должны попробовать org.junit.Before.

Другой снимок: Это то же поведение, если вы строите mockMvc на MockMvcBuilders.standaloneSetup()? Вероятно, ваш контекст настроен неправильно. javax.servlet.SessionCookieConfig, похоже, не доступен во время выполнения, возможно, вам нужно проверить зависимости.

+0

Wow thanks! Я даже не понял, что я импортировал неправильный @Before. К сожалению, это не помогло .. – Arfs

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