評論部分有一些很好的建議。因此,我想分開以下幾個方面至少:
1)實現你的場景:
弗洛裏安Schaetz的的觀點是現貨上,去爲可能是最簡單的解決方案。除非您絕對需要內容中的特定值,否則只需使用生成的網址即可完成。
Raedwald也有一個健康的建議。需要驗證多個裏面的東西一個測試通常是一個跡象,它應該分成幾個部分來檢查每個對應的功能,否則你最終建立一個god object
2)嚴格有關嘲諷:
Mockito有a few limitations,大部分時間可以結合powermock來克服。對於你的集成測試,你應該能夠mock the creation of your random class所以你可以控制它返回的內容:
@RunWith(PowerMockRunner.class) // delegate test running to Powermock so it can work its magic
@PrepareForTest({RandomMockeryTest.ClassUsingRandom.class}) // define classes which powermock should manipulate
public class RandomMockeryTest {
private Random mockedRandom;
@Before
public void setUp() throws Exception {
// mock Random
mockedRandom = PowerMockito.mock(Random.class);
// make it return 100, waaay bigger than 10, isn't it?!
PowerMockito.doReturn(100).when(mockedRandom).nextInt(Mockito.anyInt());
// whenever a new Random instance is created, make sure to return our mock
PowerMockito.whenNew(Random.class).withNoArguments().thenReturn(mockedRandom);
}
@Test
public void testSomethingRandom() {
// instantiate the class under test
ClassUsingRandom classUsingRandom = new ClassUsingRandom();
// call the method and make sure it returns the expected value
assertEquals(100, classUsingRandom.giveMeARandomValue());
}
public static class ClassUsingRandom {
public int giveMeARandomValue() {
// this should return an int between 0 and 10, not even close to 100
return new Random().nextInt(10);
}
}
}
你能分享一些代碼,所以我們有一個參考框架嗎? – Mureinik
也許,在這種情況下,問題可能是「數字爲什麼重要」?你想測試什麼?帶有包含隨機數的文本的郵件將被刪除。難道你不能簡單地在不知道隨機數的情況下進行測試,例如通過對正則表達式測試郵件文本?實際上是否需要您知道哪個號碼出來,或者您是否需要檢查號碼出來? –
@FlorianSchaetz我已編輯我的問題來解決您的問題。 –