1. <legend id='yD40b'><style id='yD40b'><dir id='yD40b'><q id='yD40b'></q></dir></style></legend>
    2. <i id='yD40b'><tr id='yD40b'><dt id='yD40b'><q id='yD40b'><span id='yD40b'><b id='yD40b'><form id='yD40b'><ins id='yD40b'></ins><ul id='yD40b'></ul><sub id='yD40b'></sub></form><legend id='yD40b'></legend><bdo id='yD40b'><pre id='yD40b'><center id='yD40b'></center></pre></bdo></b><th id='yD40b'></th></span></q></dt></tr></i><div id='yD40b'><tfoot id='yD40b'></tfoot><dl id='yD40b'><fieldset id='yD40b'></fieldset></dl></div>

          <bdo id='yD40b'></bdo><ul id='yD40b'></ul>
        <tfoot id='yD40b'></tfoot>

        <small id='yD40b'></small><noframes id='yD40b'>

        如何使用 mockito 模拟字符串?

        时间:2023-10-01
            <tbody id='nK1M2'></tbody>
            <bdo id='nK1M2'></bdo><ul id='nK1M2'></ul>
            <tfoot id='nK1M2'></tfoot>

            <legend id='nK1M2'><style id='nK1M2'><dir id='nK1M2'><q id='nK1M2'></q></dir></style></legend>
            • <i id='nK1M2'><tr id='nK1M2'><dt id='nK1M2'><q id='nK1M2'><span id='nK1M2'><b id='nK1M2'><form id='nK1M2'><ins id='nK1M2'></ins><ul id='nK1M2'></ul><sub id='nK1M2'></sub></form><legend id='nK1M2'></legend><bdo id='nK1M2'><pre id='nK1M2'><center id='nK1M2'></center></pre></bdo></b><th id='nK1M2'></th></span></q></dt></tr></i><div id='nK1M2'><tfoot id='nK1M2'></tfoot><dl id='nK1M2'><fieldset id='nK1M2'></fieldset></dl></div>

                  <small id='nK1M2'></small><noframes id='nK1M2'>

                  本文介绍了如何使用 mockito 模拟字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我需要模拟一个测试场景,在该场景中我调用 String 对象的 getBytes() 方法并得到 UnsupportedEncodingException.

                  I need to simulate a test scenario in which I call the getBytes() method of a String object and I get an UnsupportedEncodingException.

                  我已尝试使用以下代码来实现:

                  I have tried to achieve that using the following code:

                  String nonEncodedString = mock(String.class);
                  when(nonEncodedString.getBytes(anyString())).thenThrow(new UnsupportedEncodingException("Parsing error."));
                  

                  问题是,当我运行我的测试用例时,我得到一个 MockitoException,它说我无法模拟 java.lang.String 类.

                  The problem is that when I run my test case I get a MockitoException that says that I can't mock a java.lang.String class.

                  有没有办法使用 mockito 来模拟 String 对象,或者,当我调用 getBytes 方法时,是否可以让我的 String 对象抛出 UnsupportedEncodingException?

                  Is there a way to mock a String object using mockito or, alternatively, a way to make my String object throw an UnsupportedEncodingException when I call the getBytes method?

                  这里有更多细节来说明问题:

                  Here are more details to illustrate the problem:

                  这是我要测试的类:

                  public final class A {
                      public static String f(String str){
                          try {
                              return new String(str.getBytes("UTF-8"));
                          } catch (UnsupportedEncodingException e) {
                              // This is the catch block that I want to exercise.
                              ...
                          }
                      }
                  }
                  

                  这是我的测试类(我正在使用 JUnit 4 和 mockito):

                  This is my testing class (I'm using JUnit 4 and mockito):

                  public class TestA {
                  
                      @Test(expected=UnsupportedEncodingException.class)
                      public void test(){
                          String aString = mock(String.class);
                          when(nonEncodedString.getBytes(anyString())).thenThrow(new UnsupportedEncodingException("Parsing error."));
                          A.f(aString);
                      }
                  }
                  

                  推荐答案

                  问题是Java中的String类被标记为final,所以使用传统的mocking框架不能mock.根据 Mockito FAQ,这也是该框架的限制.

                  The problem is the String class in Java is marked as final, so you cannot mock is using traditional mocking frameworks. According to the Mockito FAQ, this is a limitation of that framework as well.

                  这篇关于如何使用 mockito 模拟字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:不推荐使用 MockitoJUnitRunner 下一篇:为什么我们不能使用 Mockito 为参数化构造函数创

                  相关文章

                  最新文章

                • <tfoot id='B6yDK'></tfoot>

                      <legend id='B6yDK'><style id='B6yDK'><dir id='B6yDK'><q id='B6yDK'></q></dir></style></legend>

                        <bdo id='B6yDK'></bdo><ul id='B6yDK'></ul>

                      <small id='B6yDK'></small><noframes id='B6yDK'>

                      <i id='B6yDK'><tr id='B6yDK'><dt id='B6yDK'><q id='B6yDK'><span id='B6yDK'><b id='B6yDK'><form id='B6yDK'><ins id='B6yDK'></ins><ul id='B6yDK'></ul><sub id='B6yDK'></sub></form><legend id='B6yDK'></legend><bdo id='B6yDK'><pre id='B6yDK'><center id='B6yDK'></center></pre></bdo></b><th id='B6yDK'></th></span></q></dt></tr></i><div id='B6yDK'><tfoot id='B6yDK'></tfoot><dl id='B6yDK'><fieldset id='B6yDK'></fieldset></dl></div>