我必須處理沒有測試的遺留應用程序。所以在我開始重構之前,我想確保一切都按照原樣進行。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