<legend id='7sm7b'><style id='7sm7b'><dir id='7sm7b'><q id='7sm7b'></q></dir></style></legend>
    <tfoot id='7sm7b'></tfoot>
      <bdo id='7sm7b'></bdo><ul id='7sm7b'></ul>

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

        <small id='7sm7b'></small><noframes id='7sm7b'>

        如何使用 mockito 模拟字符串?

        How to mock a String using mockito?(如何使用 mockito 模拟字符串?)

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

        <tfoot id='HHeaP'></tfoot>

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

                1. 本文介绍了如何使用 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 模拟字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  How can I detect integer overflow on 32 bits int?(如何检测 32 位 int 上的整数溢出?)
                  Local variables before return statements, does it matter?(return 语句之前的局部变量,这有关系吗?)
                  How to convert Integer to int?(如何将整数转换为整数?)
                  How do I create an int array with randomly shuffled numbers in a given range(如何在给定范围内创建一个随机打乱数字的 int 数组)
                  Inconsistent behavior on java#39;s ==(java的行为不一致==)
                  Why is Java able to store 0xff000000 as an int?(为什么 Java 能够将 0xff000000 存储为 int?)
                  <legend id='2P6B4'><style id='2P6B4'><dir id='2P6B4'><q id='2P6B4'></q></dir></style></legend>

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

                          <bdo id='2P6B4'></bdo><ul id='2P6B4'></ul>

                            <small id='2P6B4'></small><noframes id='2P6B4'>