0

junit を使用して実行しているときに、次の問題に直面していますtestValidatePanelistIDHwid。これは、このクラスに追加した新しいメソッドで、他のすべてのメソッドは正常に機能しています。

junit.framework.AssertionFailedError: Method "testValidatePanelistIDHwid" not found
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.TestCase.runTest(TestCase.java:147)
at junit.framework.TestCase.runBare(TestCase.java:127)

import junit.framework.TestCase;  

import org.apache.cactus.ServletTestCase;  
import org.apache.cactus.WebRequest;  
import xys.model.common.BusinessObjectException;  
import xys.class.model.common.util.ValidationUtility;  

public class ValidationUtilityTest extends ServletTestCase  
{  
    ValidationUtility validationUtil = new ValidationUtility();   

    public void begin(WebRequest request){}  

    public void setUp() throws Exception  
    {  
        super.setUp();  
    }//end of SetUp  

    protected void tearDown() throws Exception  
    {  
        super.tearDown();  
    }  

    public void testIsMessageOfCorrectLength()  
    {  
        boolean isCorrectLen = ValidationUtility.isMessageOfCorrectLength("Test",4);  
        assertTrue("Message is not correct.",isCorrectLen == true);  

        isCorrectLen = ValidationUtility.isMessageOfCorrectLength("Test",3);  
        assertFalse("Message is longer than the limit.",isCorrectLen == true);  

        isCorrectLen = ValidationUtility.isMessageOfCorrectLength("Test",8);  
        assertTrue("Message is not longer.",isCorrectLen == true);  

        try  
        {  
            isCorrectLen = ValidationUtility.isMessageOfCorrectLength(null,8);  
        //  fail("InputString is null.");  
        }  
        catch(Exception e)  
        {  
            System.out.println("ValidationUtilityTest:testIsMessageOfCorrectLength");
        }  
    }  

    public void testValidateCommandInstanceId()throws BusinessObjectException  
    {  
        boolean isValidCmdInstID = false;  

            isValidCmdInstID = ValidationUtility.validateCommandInstanceId(341);  
            assertTrue("Command Instance ID 341 is not valid.", isValidCmdInstID == true);  

            isValidCmdInstID = ValidationUtility.validateCommandInstanceId(400);  
            assertTrue("Command Instance ID 400 is not valid.", isValidCmdInstID == true);  

            isValidCmdInstID = ValidationUtility.validateCommandInstanceId(56);  
            assertTrue("Command Instance ID 56 is not valid.", isValidCmdInstID == true);  

            isValidCmdInstID = ValidationUtility.validateCommandInstanceId(320);  
            assertTrue("Command Instance ID 320 is not valid.", isValidCmdInstID == true);  

            try  
            {  
                isValidCmdInstID = ValidationUtility.validateCommandInstanceId(0);  
            }  
            catch(BusinessObjectException b)  
            {  
                System.out.println("ValidationUtilityTest:testValidateCommandInstanceId"); 
            }  

            try  
            {  
                isValidCmdInstID = ValidationUtility.validateCommandInstanceId(21);  
                fail("Instance ID not present.");  
            }  
            catch(BusinessObjectException b)  
            {  
                System.out.println("ValidationUtilityTest:testValidateCommandInstanceId:");
            }  

        try  
        {  
            isValidCmdInstID = ValidationUtility.validateCommandInstanceId(-500);  
            fail("Invalid Instance ID.");  
        }  
        catch(BusinessObjectException b)  
        {  
            System.out.println("ValidationUtilityTest:testValidateCommandInstanceId");
        }  
    }  

    public void testValidateHardwareId()throws BusinessObjectException  
    {  
        boolean isValidHardwareID = false;  

            isValidHardwareID = ValidationUtility.validateHardwareId("35279401003038707");  
         assertTrue("Hardware ID 35279401003038707 is not valid.", isValidHardwareID ==  true);  

            isValidHardwareID = ValidationUtility.validateHardwareId("357246016572305");  
            assertTrue("Hardware ID is not valid.", isValidHardwareID == true);  

            try  
            {  
                isValidHardwareID = ValidationUtility.validateHardwareId("352794010030387076546456546357567567686742324");  
                fail("Very Long Instance ID.");  
            }  
            catch(Exception b)  
            {  
                System.out.println("ValidationUtilityTest:testValidateHardwareId: Exception: Very Long Hardware ID.");  
            }  

            try  
            {                                                                                                                         
                isValidHardwareID = ValidationUtility.validateHardwareId("3527dsds$$$$38707");  
                fail("Invalid Hardware ID.");  
            }  
            catch(Exception b)  
            {  
                System.out.println("ValidationUtilityTest:testValidateHardwareId: Exception: Invalid Hardware ID. ");  
            }  
    }  

    public void testValidatePanelistIDHwid()throws BusinessObjectException  
    {     

        boolean PanelistIDHwid = false;  

        PanelistIDHwid = ValidationUtility.validatePanelistIDHwid(19560,"A0000024B885E2");  
            assertTrue("Panelist ID 19560 and Hardware ID A0000024B885E2  is  valid.", PanelistIDHwid == true);  
            //assertTrue("Hardware ID A0000024B885E2 is  valid.", isValidHardwareID == true);  

            PanelistIDHwid = ValidationUtility.validatePanelistIDHwid(123,"357246016572305");  
            assertTrue("Hardware ID is not valid.", PanelistIDHwid == true);  

            try  
            {  
                PanelistIDHwid = ValidationUtility.validatePanelistIDHwid(19560,"352794010030387076546456546357567567686742324");  
                fail("Very Long Instance ID.");  
            }  
            catch(Exception b)  
            {  
                System.out.println("ValidationUtilityTest:testValidateHardwareId: Exception: Very Long Hardware ID.");  
            }  

            try  
            {                                                                                                                         
                PanelistIDHwid = ValidationUtility.validatePanelistIDHwid(19560,"3527dsds$$$$38707");  
                fail("Invalid Hardware ID.");  
            }  
            catch(Exception b)  
            {  
                System.out.println("ValidationUtilityTest:testValidateHardwareId: Exception: Invalid Hardware ID. ");  
            }  
    }  

}

    junit.framework.AssertionFailedError: Method "testValidatePanelistIDHwid" not found
    at junit.framework.Assert.fail(Assert.java:47)
    at junit.framework.TestCase.runTest(TestCase.java:147)
    at junit.framework.TestCase.runBare(TestCase.java:127)
   at org.apache.cactus.internal.AbstractCactusTestCase.runBareServer(AbstractCactusTestCase.java:153)
    at org.apache.cactus.internal.server.AbstractWebTestCaller.doTest(AbstractWebTestCaller.java:119)
at org.apache.cactus.internal.server.AbstractWebTestController.handleRequest_aroundBody0(AbstractWebTestController.java:93)
at org.apache.cactus.internal.server.AbstractWebTestController.handleRequest_aroundBody1$advice(AbstractWebTestController.java:224)
at org.apache.cactus.internal.server.AbstractWebTestController.handleRequest(AbstractWebTestController.java)
at org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody2(ServletTestRedirector.java:101)
at org.apache.cactus.server.ServletTestRedirector.doPost_aroundBody3$advice(ServletTestRedirector.java:224)
at org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedirector.java)
at org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody0(ServletTestRedirector.java:72)
at org.apache.cactus.server.ServletTestRedirector.doGet_aroundBody1$advice(ServletTestRedirector.java:224)
at org.apache.cactus.server.ServletTestRedirector.doGet(ServletTestRedirector.java)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:366)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:619)
4

4 に答える 4

4

聖ワカモレ!各テストに多くのテストをパックします。スタックトレースを提供できますか? または、働かないとはどういう意味ですか?

編集

私のコメントを拡張すると、これらのテストのそれぞれは、1 つではなく複数のテストである必要があります。これはおそらく、問題を見つけることができない根本的な理由の 1 つです。何かが壊れた場合、テストは何が機能していないかを非常に明確にする必要があります。

テスト testIsMessageOfCorrectLengthを例に挙げてみましょう。つまり、1 つのテストで 3 つのテストが行​​われ、1 つのテストで 4 つの異なる期待される結果 (うち 2 つは同じ) をチェックしています。一部の人々 (および私自身) が優れたテスト コード ベースと見なすものは、次のテストに分割されます。

  • testValidatesMessageOfMinimumLength
  • testValidatesMessageOfIncorrectLength
  • testMessageValidationThrowsExceptionIfMessageIsNull

将来何かが壊れた場合、その理由と何が壊れたのかをよりよく知ることができます。

于 2011-08-21T16:12:13.970 に答える
2

Augusto がすでに説明した非常に複雑なテスト ケースは別として、テスト ハーネスを実行しているものは何でもテスト メソッドを見つけられないという主な問題が発生していると思われます。これは通常、テスト ハーネスが古いクラス ファイルをロードし、何らかの方法でキャッシュしたために発生します。testValidatePanelistIDHwidそのため、リフレクションを使用して実行するように求められた場合、クラスのテスト メソッドを見つけます。ただし、この場合、メソッドを見つけることができず (クラスが古いため)、この問題を示すエラーがスローされました。

この問題を確実に解決する最も簡単な方法は、実行中のサーバーをすべて閉じて (Web アプリケーションをプログラミングしている場合)、クリーン ビルド (すべてのクラス ファイルを削除して再コンパイルする) を行うことです。その後、テストを再度実行すると、テスト ハーネスには正しいクラスが含まれているはずです。

于 2011-08-21T20:37:28.800 に答える
0

メソッドの前に @Test アノテーションを使用してみてください。

于 2014-05-28T11:45:32.953 に答える
0

この投稿に関連する以下の問題に直面しており、修正は以下のとおりです。私のためにスローされた問題/エラーは次のとおりです: junit.framework.AssertionFailedError: expected: but was:..

問題の修正は、以下のコード スニペットが表示される場合です。

public void updateTradesMaintData() throws Exception {

    when(tradeMaintenanceDao.updateTradesMaintData(anyString(), anyList(), anyList(),anyString(), anyString())).thenReturn(true);
    //when(tradeMaintenanceDao.updateTradesMaintData(userName, //tradeStatusList, tradeReasonList, notes, pendStatus)).thenReturn(true);

    boolean data = tradeMaintainanceService.updateTradesMaintData(userName, clientCode, tradeId, tradeStatusCode, tradeSubCategory, tradeActiveFlag, tradeMatchStatusCode, tradeStatusCodeType, notes, reasonCode, reasonCodeType, reasonStatusCode);

    verify(tradeMaintenanceDao, times(1)).updateTradesMaintData(anyString(), anyList(), anyList(), anyString(), anyString());
    verifyNoMoreInteractions(tradeMaintenanceDao);
    assertNotNull(data);
    assertEquals(true, data);

}

上記のコードにコメントを付け、コメント行の上のステートメントを使用しました。

于 2016-12-07T14:01:41.410 に答える