728x90
728x90
자바기반 앱개발 & 웹서비스 구축 개발자
애플리케이션 테스트 수행

수업이 끝나면서 각 과목 별 시험 쳤던 문제들을 복습 겸 정리해보겠습니다.
첫 번째 글은 제일 처음 수업을 들었던 순서대로 자바 과목 문제가 되겠네요. 

 

 

 

 

 


 

[애플리케이션테스트수행하기]

1. 아래 클래스를 컴파일하고 실행하여 결과를 출력하고자 한다. 

class Hello{
	public static void main(String[] args){
    	System.out.println("Java World");
        }
}

1) 컴파일 실행문 :  javac Hello.java

2) 실행 명령문 :  java Hello

3) 실행결과 :  Java World

 

2. 위 코드의 파일명을 적으시오.

Hello.java

 

[ 3~5 ] 다음 클래스에 대해 물음에 답하시오.

class A {
	private int a;
	public void setA(int a){ this.a = a; }
    }
class B extends A {
	protected int b, c;
}
class C extends B {
	public int d, e;
}

 

3. A obj A = new A(); 에 의해 생성되는 객체 objA의 멤버들을 모두 나열하라.

2개
private int a;

public void setA( int a ) { this.a=a; }

4. B obj B = new B(); 에 의해 생성되는 객체 objB의 멤버들을 모두 나열하라.

4개
private int a;
public void setA( int a ) { this.a=a; }
protected int b, c;

5. C obj C = new C(); 에 의해 생성되는 객체 objB의 멤버들을 모두 나열하라.

6개
private int a;
public void setA( int a ) { this.a=a; }
public int d, e;

 

6. 자바의 모든 클래스가 반드시 상속받게 되어있는 클래스는?    1

1) Object   2) Java   3) Class   4) Super

 

7. 다음 중 설명에 적절한 단어를 기입하라.

자바에서 상속받는 클래스를 (  sub class   ) 라고 부르며, extends 키워드를 이용하여 상속을 선언한다. 상속받은 클래스에서 상속해준 부모 클래스의 멤버를 접근할 때  (  super  ) 키워드를 이용한다. 한편 자바의 클래스는 객체를 만들 수 없는 추상클래스와 인터페이스가 있다. 인터페이스는 자바 클래스와 달리 (  다중상속  ) 을 할 수 있으며 (  implements  ) 키워드를 이용하여 인터페이스를 구현한 클래스를 작성한다.

 

[애플리케이션결함조치하기]

8. 다음 코드에서 생성자로 인한 오류를 찾아내어 이유를 설명하고 오류를 수정하라.

class A {
	private int a;
    protected A(int a) { this.a = a; }
}
class B extends A {
	private int b;
    protected B() { b = 0; }
}

 

해설 >> 클래스 A의 생성자를 protected로 사용해도 무관하므로 다음은 오류가 아니다. 

protected A (int a) { this.a=a; }

잘못된 부분은 클래스 B의 다음 생성자에 있다. 
class A 에서 디폴트 생성자를 선언하거나 class B의 생성자에서 super(b)를 선언해야 한다.

protected B () { b=0; }

 

 

9. 추상 클래스를 구현하는 문제이다. 실행 결과와 같이 출력되도록 클래스 B를 완성하라.

abstract class OddDetector {
	protected int n;
	public OddDetector (int n) {
    	this.n = n;
	}
	public abstract boolean isOdd(); //홀수이면 true 리턴
}
public class B extends OddDetector {
	public B(int n) { 
    	super(n);
	}
	public static void main (String[] args) {
    	B b = new B(10);
    	System.out.println(b.isOdd()); //B가 짝수이므로 false 출력
	}
}
실행결과 : false

 

해설 >> 클래스 B에서 isOdd() 메소드 오버라이딩 한다.

public boolean isOdd() { //isOdd() 메소드 오버라이딩
	return(n%2 !=0) ? true : false;

또는

public boolean isOdd() {    //isOdd() 메소드 오버라이딩
	if(n%2 !=0) return true
	else return false;
}

 

 

10. 다음 코드의 실행 결과 "반지름=10"이 출력되도록 Circle 클래스를 수정하라.

Circle c = new Circle(10);
c.paint();

답 >> 

class Circle {
	private int radius;
	public Circle(int radius) {
		this.radius = radius;
        }
        public void paint(){
		System.out.printlnt("반지름 = " + radius);
	}
}

 

 

[애플리케이션테스트수행하기]

[ 11~12 ] JUnit에서는 Annotation을 사용하면 제어가 쉬워진다. 다음 설명하는 애노테이션을 적으시오.

11-1. @BeforeClass 단위 테스트 안의 모든 메소드 실행 전에 단 한번만 수행
11-2. @AfterClass 단위 테스트 안의 모든 메소드 실행이 된 후 마지막에 단 한번만 수행
12-1. @Before  단위 테스트 안의 각 메소드가 실행될 때마다 실행 전에 수행
12-2. @After 단위 테스트 안의 각 메소드가 실행될 때마다 실행 후에 수행

 

 

[ 13~15 ] 다음은 JUnit을 이용한 테스트 코드이다. 물음에 답하시오.

public class CalculatorTest {
       1)      @Test         
       public void testSum( ) {

               // fail("Not yet implemented");
               Calculator cal = new Calculator();
                2)         assertEquals       (30, cal.sum(20,10));
                System.out.println("test1");
       }
       1)     @Test           
       public void testSum1( ){
               // fail("Not yet implemented");
               Calculator cal = new Calculator();
                2)          assertEquals        (60, cal.sum(50,10));
                System.out.println("test2");

       }
      @BeforeClass
       public static void beforeTest( ) {
               System.out.println("BeforeClass");
       }
      @AfterClass
       public static void afterTest( ) {
               System.out.println("AfterClass");
       }
      @Before
       public static void setUp( ) {
               System.out.println("Before setUp");
       }
      @After
       public static void tearDown( ) {
               System.out.println("after tearDown");
       }

}

13. 위 코드는 jnuit을 이용한 테스트 수행 코드이다. 1번에 들어갈 애노테이션을 적으시오

@Test

 

14. 위 코드는 두 수의 합을 구하는 sum( ) 메소드를 테스트 하는 코드이다. 2에 들어갈 메소드를 적으시오.
이 메소드는 두 수의 합의 결과가 같은 지를 확인한다.

assertEquals

 

15. 위 코드를 실행했을 때 출력되는 출력문을 순서대로 적으시오.

BeforeClass
Before setUp
test1
after tearDown
Before setUp
test2
after tearDown
AfterClass

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,

v