我必须处理没有测试的遗留应用程序。所以在我开始重构之前,我想确保一切都按照原样进行。AnyString()作为单元测试的参数
现在想象一下以下情况:
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”我想传入一个随机字符串。
所以我试着用:
但是,这是不允许的,因为我得到
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: ......你无法使用验证之外的说法匹配器或stubbing
我明白这个意思,但我想知道我是否仍然可以设法做我想做的事情,而不用参数化我的测试或类似的东西。 我可能会使用的唯一库是Junit,AssertJ,Mockito和Powermock。
任何想法?
这适用于字符串,但例如长裤或其他物体? – Sorona
另外,randomUUID()永远不会返回null afaik,所以这是一个主要缺点。 – Sorona
@Sorona请参阅[java.util.Random](https://docs.oracle.com/javase/7/docs/api/java/util/Random.html)。您可以在那里找到用随机值进行测试所需的一切。另外,如果你想专门测试一个空值,那应该是一个单独的单元测试。单元测试应该便宜且快速;不要害怕在你认为有必要的地方添加新的测试用例! – nasukkin