2017-07-31 11 views
0

私はこのメソッドをユニットテストする必要がありますが、これはPattern.compile("(.*)(" + regEx + ")(.*)");のため実行できません。誰でも私を助けてくれる?BufferedReaderとPattern.compileをモックする方法は?

public final String getRegEx(String regEx) throws InterruptedException { 
    StringBuffer sb = new StringBuffer(); 
      String getURL = FrameworkConstants.DIAGNOSTIC_EVENTS; 
      int timeoutSec = 100; 
      BufferedReader sr = openURL(getURL, timeoutSec, true); 
      if (null != sr) { 
       String inputLine; 
       try { 
        Pattern pattern = Pattern.compile("(.*)(" + regEx + ")(.*)"); 
        Matcher matcher; 
        while (sr.ready()) { 
         inputLine = sr.readLine(); 
         matcher = pattern.matcher(inputLine); 
         if (matcher.matches()) { 
          System.out.println("MATCHED LINE: " + inputLine); 
          sb.append(matcher.group(2)); 
          sb.append("\n"); 
         } 
        } 
       } catch (IOException e) { 
        exception(e); 
       } finally { 
        try { 
         sr.close(); 
        } catch (IOException e) { 
         exception(e); 
        } 
       } 
       if (sb.toString().trim().isEmpty()) { 
        System.out.println("No matches have been found!"); 
       } 
      } else { 
       System.out.println(getURL + " - No access to the requested URL!"); 
      } 
    return sb.toString().trim(); 
} 

これは、試験方法である:

public final void testGetDiagnoseEvent() throws InterruptedException, IOException { 

    @Mock 
    private SubTestScript      cut_subTestScript = null; 
    @Mock 
    private static BufferedReader bufferedReader = Mockito.mock(BufferedReader.class); 
     /** Mock SubTestScript class to access the method */ 
     cut_subTestScript = Mockito.mock(SubTestScript.class, new CallsRealMethods()); 

     /** Mock method method openURL() to return the buffer stored elements . */  
     bufferedReader =new BufferedReader(new StringReader("#0129: 2017-07-30 02:05:56 00000128 0207 power supply ok\n" 
       + "#0105: 2017-07-30 02:05:42 00000169 0232 JRU version correct (SW=0500012B, CFG=105)\n" 
       + "#0131: 2017-07-30 02:05:56 00000076 0131 SDMU fully functional\n" 
       + "#0132: 2017-07-30 02:05:56 00000076 0132 SDMU fully functional\n" 
       + "#0134: 2017-07-30 02:05:56 00000086 0140 Odometry fully functional\n" 
       + "#0135: 2017-07-30 02:06:10 00000168 0232 JRU version mismatch (JRU=0000007B,105, EVCMP=0500012B,105)\n" 
       + "#0136: 2017-07-30 02:06:14 00000169 0232 JRU version correct (SW=0500012B, CFG=105)\n" 
       + "#0137: 2017-07-30 02:06:18 00000168 0232 JRU version mismatch (JRU=0500012B,123, EVC=0500012B,105)\n" 
       + "#0138: 2017-07-30 02:06:22 00000169 0232 JRU version correct (SW=0500012B, CFG=105)\n")); 

     MemberModifier.stub(MemberMatcher.method(TestScript.class, "openURL", String.class, int.class, boolean.class)).toReturn(bufferedReader); 

     assertEquals("JRU version correct", cut_subTestScript.getRegEx("JRU version correct")); 
    } 
+0

可能重複。 com/questions/21105403/mocking-static-methods-with-mockito) – talex

答えて

0

これは、出力トレースである:// stackoverflowの:(HTTPS [Mockito静的メソッドをモック]の

java.lang.NullPointerException 
    at java.util.regex.Matcher.getTextLength(Matcher.java:1140) 
    at java.util.regex.Matcher.reset(Matcher.java:291) 
    at java.util.regex.Matcher.<init>(Matcher.java:211) 
    at java.util.regex.Pattern.matcher(Pattern.java:888) 
    at javascen.testscript.TestScript.getDiagnoseEvent(TestScript.java:2159) 
    at javascen.testscript.SubTestScriptTest.testGetDiagnoseEvent(SubTestScriptTest.java:1472) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:310) 
    at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:88) 
    at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.access$100(PowerMockJUnit47RunnerDelegateImpl.java:59) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner$LastRuleTestExecutorStatement.evaluate(PowerMockJUnit47RunnerDelegateImpl.java:148) 
    at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:91) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) 
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86) 
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120) 
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33) 
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45) 
    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122) 
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106) 
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) 
    at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
関連する問題