Я хочу издеваться над конструктором по умолчанию java.util.date
, поэтому он не создает a Date
объект, представляющий время, когда он был создан, но всегда тот же Date
объект (в моем примере ниже 31 декабря 2010 года). Я пробовал делать это с JMockit
и JUnit
, но при выполнении моего теста ниже вывод всегда Thu Jan 01 01:00:00 CET 1970
. Так что же не так с моим макетом Date()
?Как высмеять конструктор по умолчанию класса Date с помощью JMockit?
import java.util.Date;
import org.junit.*;
import mockit.*;
public class AppTest {
@Before
public void setUp() {
Mockit.setUpMocks(MockedDate.class);
}
@After
public void tearDown() {
Mockit.tearDownMocks();
}
@Test
public void testDate() {
Date today=new Date();
System.out.println(today.toString());
}
@MockClass(realClass=Date.class)
public static class MockedDate {
@Mock
public void $init() {
// Now should be always 31.12.2010!
new Date(110,11,31); //110 = 2010! 11 = December! This is sick!
}
}
}
Я попытался это, но он дал мне 'NullPointerException в AppTest $ MockedDate. $ INIT (AppTest. java) в java.util.date. '. –
asmaier
Странно, я просто попробовал, и он работает, используя текущий jmockit. – fdreger
привет, могу ли я установить другой объект Date в «it»? 'it = new Date (...)' –