단위 테스트를 위해 JUnit을 사용하고 있습니다. B
클래스 (B
클래스의 메서드)를 테스트하려고한다고 가정 해 봅시다. 주 클래스 (main
메서드 포함) 인 다른 클래스 A
이 있고 protected static
필드가 있다고 가정 해 보겠습니다.정적 필드의 JUnit 초기화
이제 B
클래스는 A
클래스의 정적 필드 중 일부를 사용합니다. 따라서 클래스 B
을 테스트 할 경우이 정적 필드 인 A
은 존재하지 않습니다.
클래스 A
을 실행하는 프로그램을 실행하지 않고 클래스 B
을 테스트하려면 어떻게해야합니까?
편집 : 분명히해야합니다. 의 우리가 SRC/package1/classA.java에 다음 클래스 A가 있다고 가정하자
public classA {
protected static int field1;
protected static int field2;
public static void main(String[] args) {
// initialize static fields.
}
}
지금 우리가 같은 패키지 SRC/package1/classB.java 다른 클래스 B가 있다고 가정 할 수 있습니다.
public ClassB {
public ClassB() {
// Do some stuff.
}
public void someMethod() {
// Access of static fields from A.
classA.field1....
classA.field2....
}
}
는 지금은 테스트 클래스 B에 대한 테스트/package1/classBTest.java에서 JUnit 테스트를하지만 문제는 필드 1과 FIELD2 초기화되지 않습니다.
클래스 A의 main 메소드를 실행하지 않고 classA.field1과 classA.field2의 두 필드를 수동으로 JUnit에서 초기화 할 수 있습니까?
클래스'A'에 대해서 이야기 할 때 개인 정적 필드를 의미합니까? 클래스가 private 인 경우 JUnit을 사용하든 다른 클래스를 사용하든 관계없이 클래스 B에 액세스 할 수 없습니다. – Bobulous
아니요, 아니요. 클래스 A의 보호 된 정적 필드를 의미합니다. 클래스 A와 클래스 B는 동일한 패키지에 있습니다. – machinery
나는 당신이 우리에게 오류를 throw하는 코드와 던져진 정확한 오류 메시지를 보여줘야 할 것이라고 생각한다. B에서'A'의 정적 필드를 참조하는 데는 문제가 없어야하므로 질문을 편집하고 자세한 정보를 제공해야합니다. – Bobulous