gpt4 book ai didi

java - AnyString() 作为单元测试的参数

转载 作者:行者123 更新时间:2023-12-02 07:49:25 25 4
gpt4 key购买 nike

我必须处理一个没有测试的遗留应用程序。因此,在开始重构之前,我想确保一切都按原样运行。

现在想象一下以下情况:

public SomeObject doSomething(final OtherObject x, final String something) {
if(x == null) throw new RuntimeException("x may not be null!");
...
}

现在我想测试该空检查,以确保它有效并且重构后我不会丢失它。

所以我这么做了

@Test(expected = RuntimeException.class)
public void ifOtherObjectIsNullExpectRuntimeException() {
myTestObject.doSomething(null, "testString");
}

现在,这当然有效。

但是我想传递一个随机字符串,而不是“testString”。

所以我尝试了:

@Test(expected = RuntimeException.class)
public void ifOtherObjectIsNullExpectRuntimeException() {
myTestObject.doSomething(null, Mockito.anyString());
}

但是这是不允许的。,据我所知

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:... You cannot use argument matchers outside of verifications or stubbing

我确实明白这句话的意思,但我想知道我是否仍然可以在不参数化我的测试等的情况下做我想做的事情。我唯一可以使用的库是 Junit、AssertJ、Mockito 和 Powermock。

有什么想法吗?

最佳答案

测试应该是确定性的。在测试中使用随机值使得在调试失败的测试时很难重现行为。我建议您为测试创建一个 String 常量,例如 "abcdefg"

关于java - AnyString() 作为单元测试的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39418491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com