java类静态方法测试

静态方法是在new之前就已经加载到内存地址中了,再次new对象时候这些静态属性或者静态方法不会再分配新的内存地址了,这些静态属性或者静态方法在多个对象中是共用的。

public class Common {
	private static	String test = "123";
	private	String test1 = "456";
	
	public static String getTest() {
		return test;
	}

	public static void setTest(String test) {
		Common.test = test;
	}

	public String getTest1() {
		return test1;
	}

	public void setTest1(String test1) {
		this.test1 = test1;
	}
}
/*************test*************/
System.out.println("Common test = "+Common.getTest());
Common.setTest("abc");
System.out.println("Common test = "+Common.getTest());

Common com = new Common();
Common com1 = new Common();
System.out.println("------------------------------");
System.out.println("com test = "+com.getTest());
System.out.println("com1 test = "+com1.getTest());
System.out.println("com test1 = "+com.getTest1());
System.out.println("com1 test1 = "+com1.getTest1());
com.setTest("cccccccccc");
com.setTest1("dddddddddd");
System.out.println("------------------------------");
System.out.println("com test = "+com.getTest());
System.out.println("com1 test = "+com1.getTest());
System.out.println("com test1 = "+com.getTest1());
System.out.println("com1 test1 = "+com1.getTest1());
System.out.println("Common test = "+Common.getTest());
结果:

Common test = 123
Common test = abc
------------------------------
com test = abc
com1 test = abc
com test1 = 456
com1 test1 = 456
------------------------------
com test = cccccccccc
com1 test = cccccccccc
com test1 = dddddddddd
com1 test1 = 456
Common test = cccccccccc

您可以使用Mockito框架来模拟静态方法的行为进行单元测试。Mockito是一个流行的Java测试框架,它可以帮助您创建模拟对象,以替代真实的对象进行测试。 要模拟静态方法,您可以使用PowerMockito框架。PowerMockito是Mockito的扩展,它提供了对静态方法、私有方法和构造函数的模拟支持。 下面是一个示例,展示了如何使用PowerMockito模拟静态方法进行单元测试: ```java import static org.mockito.Mockito.*; // 导入PowerMockito相关的 import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.junit.Test; // 要模拟的 class MyClass { public static String staticMethod() { return "Hello, World!"; } } @PrepareForTest(MyClass.class) // 声明需要准备进行测试 public class MyTest { @Test public void testStaticMethod() { PowerMockito.mockStatic(MyClass.class); // 使用PowerMockito模拟静态方法 // 模拟静态方法的返回值 when(MyClass.staticMethod()).thenReturn("Mocked!"); // 调用被测试方法 String result = MyClass.staticMethod(); // 验证返回值是否符合预期 assertEquals("Mocked!", result); } } ``` 在上面的示例中,我们使用了`@PrepareForTest`注解来声明需要准备进行测试(即包含静态方法)。然后,我们使用`PowerMockito.mockStatic()`方法来模拟静态方法。接下来,使用`when().thenReturn()`来指定模拟方法的返回值。最后,调用被测试的方法,并通过断言来验证返回值是否与预期相符。 请注意,使用PowerMockito需要对测试进行适当的配置和依赖管理。您需要在构建工具(如Maven或Gradle)的配置文件中添加PowerMockito和相关依赖。此外,PowerMockito通常与JUnit一起使用,所以您可能需要将JUnit添加为依赖项,并使用`@Test`注解来标记测试方法。 希望这个示例能帮助您开始在Java中模拟静态方法进行单元测试。如果您有其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值