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

    3. <small id='mKzQG'></small><noframes id='mKzQG'>

        Powermock 和 Mockito.在模拟和存根同一类时避免对类

        时间:2023-09-26

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

          <small id='1bCtY'></small><noframes id='1bCtY'>

          <tfoot id='1bCtY'></tfoot>
          <legend id='1bCtY'><style id='1bCtY'><dir id='1bCtY'><q id='1bCtY'></q></dir></style></legend>

              <bdo id='1bCtY'></bdo><ul id='1bCtY'></ul>
                • 本文介绍了Powermock 和 Mockito.在模拟和存根同一类时避免对类进行静态初始化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  假设我有一个名为 Util 的类,其中包含静态字段:

                  Suppose I have a class named Util with static fields:

                  public class Util {
                  
                      public static field = Param.getValue("param1");                 
                  
                  }
                  

                  Param 类看起来像这样:

                  and the class Param look like this:

                  public class Param {
                  
                      public static field = SomeClass.getValue("someValue");
                  
                  }
                  

                  我想在 Util 中模拟和存根 Param.getValue("param1"),但同时我想抑制 Param 类的静态初始化.我怎样才能做到这一点?

                  I want to mock and stubb Param.getValue("param1") inside Util, but at the same time I want suppress static initialization for Param class. How can I achieve this?

                  这是我的第一次尝试,但它不起作用

                  This is my first attempt but it's not working

                  @RunWith(PowerMockRunner.class)
                  @PrepareForTest({Param.class})
                  @SuppressStaticInitializationFor("py.com.company.Param")
                  public class Test {
                  
                       @Test
                       public void testSomeMethod() {
                           PowerMockito.mockStatic(Param.class);
                           when(Param.getValue("value1")).thenReturn("someValue1");
                       }
                  
                  }
                  

                  推荐答案

                  这对我有用.如果没有 @SuppressStaticInitializationFor:

                  This is working for me. I get no output, and SomeClass#getValue if no @SuppressStaticInitializationFor:

                  @RunWith(PowerMockRunner.class)
                  @SuppressStaticInitializationFor({"so35047166.Param"})
                  @PrepareForTest({Param.class})
                  public class UtilTest {
                      @Before
                      public void setUp() throws Exception {
                          PowerMockito.mockStatic(Param.class);
                      }
                  
                      @Test
                      public void testFoo() throws Exception {
                          final Util util = new Util();
                          assertEquals("Util#foo", util.foo());
                          assertEquals(null, Util.field);
                      }
                  }
                  

                  与:

                  // all in package so35047166;
                  
                  public class Util {
                  
                      public static String field = Param.getValue("param1");
                  
                      public String foo() {
                          return "Util#foo";
                      }
                  }
                  
                  public class Param {
                  
                      public static String field = SomeClass.getValue("someValue");
                  
                      public static String getValue(final String in) {
                          System.out.println("Param#getValue");
                          return "Param#getValue";
                      }
                  }
                  
                  public class SomeClass {
                      public static String getValue(final String in) {
                          System.out.println("SomeClass#getValue");
                          return "SomeClass#getValue";
                      }
                  }
                  

                  这篇关于Powermock 和 Mockito.在模拟和存根同一类时避免对类进行静态初始化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何使用 NoSuchAlgorithmException 和 KeyStoreException 覆 下一篇:如何干净地测试使用 DomainClassConverter 检索参数的

                  相关文章

                  最新文章

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

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