2014-02-24 1 views
1

jUnit 및 REST 웹 서비스를 실험합니다. 다음과 같은 클래스와 테스트 클래스를 작성하여 테스트했습니다. 테스트를 잘못 작성했거나 서비스가 잘못 작성되었습니다.

나는 그것이 return "50"; 또는
은 또한 50 경로를 복귀하도록되어한다고 생각? 그 테스트를 어떻게 작성합니까? jUnit assertEquals 문자열 반환 값 "50"은 "50"이지만 반환 값은 없습니다. 테스트

클래스 :

@Path("/QAService") 
public class QAService { 
    @GET() 
    //@Path("/") 
    @Produces("text/plain") 
    public String getServiceInfo() { 
     return "50"; 
    } 

클래스의 시험 :

public class QAServiceTest { 
    @Test 
    public void testgetServiceInfo() { 

     String expected = "50"; 

     //create static variable to call non-static variable. assertEquals. 
     QAService qas = new QAService(); 
     qas.getServiceInfo(); 
     assertEquals(expected, qas); 
    } 

그러나 가지고 테스트 결과 :

expected:<50> but was:<[email protected]> 
java.lang.AssertionError 
    at org.junit.Assert.fail(Assert.java:93) 
    at org.junit.Assert.failNotEquals(Assert.java:647) 
    at org.junit.Assert.assertEquals(Assert.java:128) 
    at org.junit.Assert.assertEquals(Assert.java:147) 
    at com.hey.BLA.zurich.QAServiceTest.testgetServiceInfo(QAServiceTest.java:25) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) 
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) 
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) 
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) 
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) 
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68) 
+0

'getServiceInfo()'메소드는''50 "'을 리턴합니다. –

+0

경로를 반환하지 않아야합니다. 경로는 브라우저에서 이동하는 경로이므로 getServiceInfo()가 실행됩니다. 따라서 (예를 들어 브라우저에서)'/ QAService'로 가면'50'이라는 텍스트가 보일 것입니다. – vegemite4me

답변

7

당신은 아마 의미 :

assertEquals(expected, qas.getServiceInfo()); 
+0

thx! 내가 조금 피곤했던 것 같아 .- ' – JustinBieber