2012-09-26 6 views
2

다음은 시나리오입니다. 한 클래스에서 임의의 데이터를 생성하고 같은 클래스의 메서드에서 인수로 사용합니다. 다른 클래스에서 정확히 같은 값을 사용할 수 있습니까? 그런 다음Java의 다른 클래스에서 UUID 액세스

public class A { 
    @Test 
    public void aMethod() {  
     RandomStringUUID ruuid = new RandomStringUUID(); 
     } 
} 

:

public class B { 
     @Test 
    public void bMethod() { 
     // Want to use ruuid , without instantiating RandomStringUUID 
       // as i dont want new values, i want the one from class A 
     } 
} 
+1

클래스 A와 클래스 B 사이의 관계는 무엇입니까? – user1201210

+1

시험은 재현 가능해야합니다. 테스트에서 예측할 수없는 임의의 테스트 데이터 (프로덕션 데이터베이스의 데이터, 동적 IP 주소 등)를 사용해서는 안됩니다. 테스트가 실패하고 각각의 테스트 실행이 다른 매개 변수를 가지고 있기 때문에 이유를 알 수없는 것을 상상해보십시오. –

+0

@Andreas_D 제 경우에는 테스트 프레임 워크의 일부이기 때문에 무작위 데이터를 사용하는 것이 중요합니다. 따라서 고유 웹 서비스에 대해 이것을 사용하십시오. – kamal

답변

2

의 Beatdown 후 A 급

public static RandomStringUUID RUUID = new RandomStringUUID(); 

에 변수 공공 정적 변수를 확인 여기에

내 클래스의 단순화 된 버전입니다 투표 수에 들어갑니다.

디자인 규칙 또는 클래스에서 클래스로 변수를 가져 오는 방법에 대한 간단한 JAVA 질문을 유추하기위한 OP 부분에 정보가 충분하지 않습니다. : 액세스 할 수는 사용할 수있는 메이크업을

public class B { 
    @Test 
    public void bMethod(RandomStringUUID ruuid) { 
    // Want to use ruuid , without instantiating RandomStringUUID 
      // as i dont want new values, i want the one from class A 
    } 
} 

을 B 또는이 할 수있는 가치를 제공

public class A { 

    private final static RandomStringUUID ruuid = new RandomStringUUID(); 

    public final static RandomStringUUID getRuuid() { 
     return ruuid; 
    } 

    @Test 
    public void aMethod() {  
     RandomStringUUID ruuid = getRuuid(); 
    } 
} 

public class B { 
    @Test 
    public void bMethod() { 
     RandomStringUUID ruuid = A.getRuuid(); 
    } 
} 
+0

기능 요구 사항과 기술 설계 (OP가 말하지 않은)가 클래스 변수가되는 것을 어떻게 확신합니까? 그것은 원래 인스턴스 메소드에서 작성된 것입니다. 클래스 변수를 만들면 원치 않는 부작용이 생길 수 있습니다. – BalusC

+0

이 선언문에 '결승'을 놓쳤 으면 좋겠다. 그렇지 않다면 정적 변수를 통해 데이터를 교환하는 것이 내가 추천하는 것이 아닙니다. 당신이 그들에게 나쁜 프로그래밍 습관을 가르치고 싶지 않다면. –

+1

@ BalusC 나는 유죄를 인정하지 않으며, 유추하지 않는 JAVA 똑 바른 질문을한다. – gtgaxiola

4

은 정적 인 방법을 사용 @sics는 B가 말했다.

0

가끔씩 헬퍼 클래스 사용을 테스트합니다. 그것은 귀하의 (시험) 케이스를위한 해결책이 될 수 있습니다. 그래서 AB에 값을 제공하지 않습니다하지만 둘은 세 번째 클래스에서 동일한 개체를 얻을 것이다 : 그것은 여전히 ​​의심의

public class TestHelper { 

    private final static RandomStringUUID UUID = new RandomStringUUID(); 

    public static RandomStringUUID getDummyRandomStringUUID() { 
    return UUID; 
    } 
} 

public class A { 
    @Test 
    public void aMethod() {  
    RandomStringUUID ruuid = TestHelper.getDummyRandomStringUUID(); 
    } 
} 

(그리고 B와 같은)

을 각 테스트 실행마다 다른 UUID 값을 사용하기 때문에 테스트를 재현 할 수 없습니다. 모든 테스트 실행에 사용되는 정적 UUID를 정의하는 것이 좋습니다.

관련 문제