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

  • <tfoot id='EzB43'></tfoot>
  • <legend id='EzB43'><style id='EzB43'><dir id='EzB43'><q id='EzB43'></q></dir></style></legend>

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

        • <bdo id='EzB43'></bdo><ul id='EzB43'></ul>

        如何在没有 powermock 的情况下模拟静态方法

        时间:2023-09-26
              <legend id='zHTtb'><style id='zHTtb'><dir id='zHTtb'><q id='zHTtb'></q></dir></style></legend>

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

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

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

                  本文介绍了如何在没有 powermock 的情况下模拟静态方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  在 JUnit 中进行测试时,有什么方法可以模拟静态 util 方法吗?

                  Is there any way we can mock the static util method while testing in JUnit?

                  我知道 Powermock 可以模拟静态调用,但我不想使用 Powermock.

                  I know Powermock can mock static calls, but I don't want to use Powermock.

                  还有其他选择吗?

                  推荐答案

                  (不过我假设你可以使用 Mockito)我没有想到任何专门的东西,但是当涉及到这样的情况时,我倾向于使用以下策略:

                  (I assume you can use Mockito though) Nothing dedicated comes to my mind but I tend to use the following strategy when it comes to situations like that:

                  1) 在被测类中,将静态直接调用替换为对封装静态调用本身的包级方法的调用:

                  1) In the class under test, replace the static direct call with a call to a package level method that wraps the static call itself:

                  public class ToBeTested{
                  
                      public void myMethodToTest(){
                           ...
                           String s = makeStaticWrappedCall();
                           ...
                      }
                  
                      String makeStaticWrappedCall(){
                          return Util.staticMethodCall();
                      }
                  }
                  

                  2) 在测试和模拟封装的包级方法时监视被测类:

                  2) Spy the class under test while testing and mock the wrapped package level method:

                  public class ToBeTestedTest{
                  
                      @Spy
                      ToBeTested tbTestedSpy = new ToBeTested();
                  
                      @Before
                      public void init(){
                          MockitoAnnotations.initMocks(this);
                      }
                  
                      @Test
                      public void myMethodToTestTest() throws Exception{
                         // Arrange
                         doReturn("Expected String").when(tbTestedSpy).makeStaticWrappedCall();
                  
                         // Act
                         tbTestedSpy.myMethodToTest();
                      }
                  }
                  

                  这是我写的一篇关于间谍的文章,其中包括类似的案例,如果您需要更多见解:sourceartists.com/mockito-spying

                  Here is an article I wrote on spying that includes similar case, if you need more insight: sourceartists.com/mockito-spying

                  这篇关于如何在没有 powermock 的情况下模拟静态方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:Java 使用 Mockito 验证 void 方法调用 n 次 下一篇:调用未存根的方法时抛出 RuntimeException

                  相关文章

                  最新文章

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

                        <bdo id='D6QFe'></bdo><ul id='D6QFe'></ul>
                    3. <tfoot id='D6QFe'></tfoot>

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