2012-09-27 67 views
0

我正在测试我的DB应用程序中的一件简单的事情。创建产品。为此,我使用JUnit测试,这里是测试总是失败,而不是预期的结果变成绿色(通过)...JUnit测试 - 预期结果应该通过的测试有什么问题?

@Test 
public void testCreate(){ 
    Produkt test = new Produkt(20, "junit", "junitk", false, 900.67, true, true); 
    handler.createProdukt(test); 
} 

,当我和一个主要方法(只需创建一个新的尝试,只是产品,看看是否工作...)创建功能伟大工程,并创造了这个Produkt。

我在做什么错?

PS:这里是我设置的测试代码:

@Before 
public void setUp() throws SQLException, ClassNotFoundException{ 
    try { 
     this.shandler = new ServiceHandler(); 
     this.setServiceHandler(shandler); 
     manager.getConnection(); 
     manager.getConnection().setAutoCommit(false); 
    } catch (SQLException ex) { 
     System.err.println("ERROR:"); 
     ex.printStackTrace(); 
    } 

} 

@After 
public void tearDown() throws SQLException, ClassNotFoundException{ 
    manager.getConnection().rollback(); 
    manager.closeConnection(); 
} 

UPDATE 我想你指的是故障跟踪:

显示java.lang.NullPointerException在 (本地方法) sun.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java:597)在 org.junit.runners.model .FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:45) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 在 org.junit.runners.model.FrameworkMethod.invokeExplosively( FrameworkMethod.java:42) 在 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 在org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)在 组织.junit.runners.Bl ockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 在org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:231)在 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)维持在 org.junit.runners.ParentRunner.run(ParentRunner.java:300 org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:222))在 org.eclipse.jdt.internal .junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org .eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 在 有机.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 在 有机.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

+4

*“总是失败的测试”*它如何失败?例外?不是预期的产出?不终止? .... – assylias

+0

输出是红色的,但我期望它是绿色的! – maximus

+0

+1 @assylias。另外你如何用主要方法运行测试?你是否像JUnit一样执行测试设置?你在你的main中调用'setUp()'吗? – AlexR

回答

2

假设你的代码段是准确的,你的setUp()方法实例化一个shandler而您的testCreate()测试使用handler字段。并且stacktrace清楚地显示您在testCreate()中有一个NullPointerException。所以你做错了的事情是试图调用一个值为null的对象的方法。

+0

thx很多为您的答案现在变得更清晰! – maximus