자바기반 앱개발 & 웹서비스 구축 개발자
애플리케이션 테스트 수행
수업이 끝나면서 각 과목 별 시험 쳤던 문제들을 복습 겸 정리해보겠습니다.
첫 번째 글은 제일 처음 수업을 들었던 순서대로 자바 과목 문제가 되겠네요.
[애플리케이션테스트수행하기]
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
'Java Friends > Study Test' 카테고리의 다른 글
자바기반 앱개발 & 웹서비스 구축개발 :: SQL활용 문제와 답 (0) | 2019.09.27 |
---|---|
자바기반 앱개발 & 웹서비스 구축개발 :: 응용소프트웨어기초기술활용 문제 (0) | 2019.09.15 |
자바기반 앱개발 & 웹서비스 구축개발 :: 데이터베이스 구현 문제 (0) | 2019.09.12 |
자바기반 앱개발 & 웹서비스 구축개발 :: 애플리케이션 배포 문제와 답 (0) | 2019.09.10 |
자바기반 앱개발 & 웹서비스 구축개발 :: 프로그래밍언어활용 문제와 답 (0) | 2019.09.09 |