package junit.extensions.eclipse.quick; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IMethod; import org.eclipse.jdt.core.IType; import org.junit.Before; import org.junit.Test; /** * This test class shows JavaElements specification. */ public class JavaElementsTest { private IMethodMockBuilder methodBuilder; private ITypeMockBuilder typeBuilder; @Before public void before() throws Exception { methodBuilder = new IMethodMockBuilder(); typeBuilder = new ITypeMockBuilder(); } @Test public void recognition_junit4_test_method() throws Exception { IMethod element = methodBuilder.junit4_method().build(); assertThat(JavaElements.isTestMethod(element),is(true)); } @Test public void recognition_junit3_test_method() throws Exception { IMethod element = methodBuilder.junit3_method().build(); assertThat(JavaElements.isTestMethod(element),is(true)); } @Test public void test_method_should_has_no_args() throws Exception { IMethod element = methodBuilder.returnVoid().setNumberOfParameters(1).build(); assertThat(JavaElements.isTestMethod(element),is(false)); } @Test public void test_method_should_public_method() throws Exception { IMethod element = methodBuilder.returnVoid().build(); // package private assertThat(JavaElements.isTestMethod(element),is(false)); element = methodBuilder.junit3_method().setPrivate().build(); assertThat(JavaElements.isTestMethod(element),is(false)); element = methodBuilder.junit3_method().setProtected().build(); assertThat(JavaElements.isTestMethod(element),is(false)); } @Test public void test_method_should_not_static_method() throws Exception { IMethod element = methodBuilder.junit3_method().setStatic().build(); assertThat(JavaElements.isTestMethod(element),is(false)); element = methodBuilder.junit3_method().setPrivate().setStatic().build(); assertThat(JavaElements.isTestMethod(element),is(false)); element = methodBuilder.junit3_method().setPrivate().setStatic().build(); assertThat(JavaElements.isTestMethod(element),is(false)); } @Test public void should_return_null_when_empty_class() throws Exception { IType element = typeBuilder.normal_class().build(); assertThat(JavaElements.getTestMethodOrClass(element),is(nullValue())); } @Test public void should_return_class_when_the_class_is_selected_that_has_junit4_method() throws Exception { IMethod method = methodBuilder.junit4_method().build(); IType element = typeBuilder.normal_class().addMethod(method).build(); assertThat(JavaElements.getTestMethodOrClass(element),is(notNullValue())); assertThat((IType)JavaElements.getTestMethodOrClass(element),is(element)); } @Test public void should_return_class_when_junit3_class_is_selected() throws Exception { IMethod method = methodBuilder.junit3_method().build(); IType element = typeBuilder.junit3_class().addMethod(method).build(); assertThat(JavaElements.getTestMethodOrClass(element),is(notNullValue())); assertThat((IType)JavaElements.getTestMethodOrClass(element),is(element)); } @Test public void should_return_class_when_junit4_suite_class_is_selected() throws Exception { IType element = typeBuilder.junit4_suite().build(); assertThat((IType)JavaElements.getTestMethodOrClass(element),is(element)); } @Test public void should_return_class_when_junit4_parameterized_class_is_selected() throws Exception { IMethod method = methodBuilder.junit4_method().build(); IType element = typeBuilder.normal_class().setRunWith("Parameterized.class").addMethod(method).build(); assertThat((IType)JavaElements.getTestMethodOrClass(element),is(element)); } @Test public void should_return_class_when_junit4_parameterized_class_method_is_selected() throws Exception { IMethod method = methodBuilder.junit4_method().build(); IType element = typeBuilder.normal_class().setRunWith("Parameterized.class").addMethod(method).build(); IJavaElement result = JavaElements.getTestMethodOrClass(method); assertThat(result,is(instanceOf(IType.class))); assertThat((IType)result,is(element)); } }