2008-09-11 4 views

답변

3

명백한 두 경로는 경고를 표시하지 않거나 서브 클래스를 조롱하는 것입니다.

private static class SomeClass_Integer extends SomeClass<Integer>(); 
private SomeClass<Integer> someClass; 
... 
    someClass = EasyMock.createMock(SomeClass_Integer.class); 

(면책 조항 : 심지어이 코드를 컴파일을 시도하지 않으며, 내가 EasyMock에를 사용하고 있습니다.)

+0

의 구문은 아마도해야합니다 : 개인 정적 인터페이스 SomeClass_Integer은 SomeClass 확장 {} 저도 같은 문제를 가지고 내가 그렇게 접근 방식 사용 주위에이 작품입니다 작동합니다. 그러나 나는 누군가가 우리가 찾고있는 대답을 가지기를 바란다. –

2

당신은 @SuppressWarnings("unchecked")과 시험 방법을 주석을 달 수 있습니다. 나는 이것이 몇 가지 해킹에 동의하지만 내 의견으로는 테스트 코드에서 받아 들일 만하다. 문자 클래스 이름이 포함될 때

@Test 
@SuppressWarnings("unchecked") 
public void someTest() { 
    SomeClass<Integer> someClass = EasyMock.createMock(SomeClass.class); 
} 
+2

네, 그렇지만 저가로 느껴진다. –

+2

만약이 길로 가면 (잘하면 더 좋은 방법이있다) @SuppressWarnings을 변수 할당에 넣는 것보다 훨씬 더 좋다. 방법. – SamBeran

39

AFAIK, 당신은 체크되지 않은 경고를 피할 수 있고, SuppressWarnings 주석이 처리 할 수있는 유일한 방법입니다.

SuppressWarnings 주석의 범위를 최대한 좁히는 것이 좋은 형식입니다.

public void testSomething() { 

    @SuppressWarnings("unchecked") 
    Foo<Integer> foo = EasyMock.createMock(Foo.class); 

    // Rest of test method may still expose other warnings 
} 

또는 도우미 메서드 사용 : 당신은 하나의 지역 변수 할당이 주석을 적용 할 수 있습니다

@SuppressWarnings("unchecked") 
private static <T> Foo<T> createFooMock() { 
    return (Foo<T>)EasyMock.createMock(Foo.class); 
} 

public void testSomething() { 
    Foo<String> foo = createFooMock(); 

    // Rest of test method may still expose other warnings 
} 
11

내가, 예를 들어, 서브 클래스를 도입하여이 문제를 해결하려면 일을 나는이 질문에 반하는 알고 있지만 왜 모의 목록이 아닌 목록을 작성하지

MySpecial<String> myMock = createControl().createMock(MySpecialString.class); 
+0

또한 추상 클래스를 사용할 때 모의 객체를 생성하기 위해 EasyMock의'org.easymock.classextension.EasyMock' 버전을 사용하는 것을 잊지 마십시오. – Andreas

+0

EasyMock 3.0 (2010 년 5 월) 현재, org.easymock.classextension의 클래스는''org.easymock''의 같은 이름의 클래스에 대한 단순한 프록시입니다. 가져 오기에서 ".classextension"을 제거하고 classextension 라이브러리를 사용하여 컴파일을 중지하는 것이 좋습니다. – AndrewF

0

:

private abstract class MySpecialString implements MySpecial<String>{}; 

그런 다음 그 추상 클래스의 실물 크기의 모형을 만들?

예를 들어 목록에 항목을 추가하려는 경우 코드가 적어 작업하기가 쉽습니다.

MyItem myItem = createMock(myItem.class); 
List<MyItem> myItemList = new ArrayList<MyItem>(); 
myItemList.add(myItem); 

대신

MyItem myItem = createMock(myItem.class); 
@SuppressWarnings("unchecked") 
List<MyItem> myItemList = createMock(ArrayList.class); 
expect(myItemList.get(0)).andReturn(myItem); 
replay(myItemList); 
관련 문제