Создайте макет с помощью Mockito (в контексте «операторов Java»):
${:importStatic('org.mockito.Mockito.mock')}${Type} ${mockName} = mock(${Type}.class);
И в «Членах типа Java»:
${:import(org.mockito.Mock)}@Mock
${Type} ${mockName};
Макет недействительного метода для выброса исключение:
${:import(org.mockito.invocation.InvocationOnMock,org.mockito.stubbing.Answer)}
doThrow(${RuntimeException}.class).when(${mock:localVar}).${mockedMethod}(${args});
Макет недействительного метода, чтобы сделать что-то:
${:import(org.mockito.invocation.InvocationOnMock,org.mockito.stubbing.Answer)}doAnswer(new Answer<Object>() {
public Object answer(InvocationOnMock invocation) throws Throwable {
Object arg1 = invocation.getArguments()[0];
return null;
}
}).when(${mock:localVar}).${mockedMethod}(${args});
Проверьте, что смоделированный метод вызывается ровно один раз:
${:importStatic(org.mockito.Mockito.verify,org.mockito.Mockito.times)}
verify(${mock:localVar}, times(1)).${mockMethod}(${args});
Убедитесь, что смоделированный метод никогда не вызывается :
${:importStatic(org.mockito.Mockito.verify,org.mockito.Mockito.never)}verify(${mock:localVar}, never()).${mockMethod}(${args});
Новый связанный список с использованием Google Guava (и аналогичный для hashset и hashmap):
${import:import(java.util.List,com.google.common.collect.Lists)}List<${T}> ${newName} = Lists.newLinkedList();
Также я использую огромный шаблон, который генерирует класс Test. Вот сокращенный фрагмент, который каждый желающий должен настроить:
package ${enclosing_package};
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import org.mockito.Mockito;
import org.slf4j.Logger;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.junit.runner.RunWith;
// TODO autogenerated test stub
@RunWith(MockitoJUnitRunner.class)
public class ${primary_type_name} {
@InjectMocks
protected ${testedType} ${testedInstance};
${cursor}
@Mock
protected Logger logger;
@Before
public void setup() throws Exception {
}
@Test
public void shouldXXX() throws Exception {
// given
// when
// TODO autogenerated method stub
// then
fail("Not implemented.");
}
}
// Here goes mockito+junit cheetsheet
Подключить обработчик событий для события Paint
в GroupBox
и вместо этого вызовите DrawLShapeLine
из этого обработчика событий. Затем следует использовать объект Graphics
, предоставленный аргументами события in:
private void groupBox1_Paint(object sender, PaintEventArgs e)
{
DrawLShapeLine(e.Graphics, 10, 10, 20, 40);
}
Ваш код будет пытаться рисовать в GroupBox
, когда форма требует рисования. Групповое поле можно раскрасить в любом другом случае, в результате чего нарисованная линия исчезнет.
Если вы хотите использовать waitLoop в «если», вы можете изменить «выход» на «возврат», так что остальная часть сценария может обработать ситуацию с ошибкой (нет даже сообщения пользователю о том, что не удалось, прежде чем сценарий умрет в противном случае).
Другая проблема заключается в использовании «$ test» для удержания команды означает, что вы не t получить расширение оболочки при фактическом выполнении, просто оценивая. Поэтому, если вы скажете test = "grep \" foo \ "\" bar baz \ "", вместо того, чтобы искать трехбуквенную строку foo в файле с семисимвольной строкой имени bar baz, он будет искать строку из пяти символов "foo" в девяти символьном файле "bar baz".
Так что вы можете либо решить, что вам не нужна магия оболочки,
Я не уверен, что происходит что-то еще, но вы должны нарисовать линию на событии Paint GroupBox
, а не на форме
]