달력

122025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

MainActivity 부분


onCreate(){

String URL = "이미지주소";

new DownloadImageTask((ImageView)findViewById(R.id.imageView)).execute(URL);

}


DownloadImageTask.java 부분



public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {


ImageView bmImage;

public DownloadImageTask(ImageView bmImage) {

this.bmImage = bmImage;

}

@Override

protected Bitmap doInBackground(String... urls) {

String urlDisplay = urls[0];

Bitmap mIcon11 = null;

try{

InputStream in = new java.net.URL(urlDisplay).openStream();

mIcon11 = BitmapFactory.decodeStream(in);

}catch (Exception e){

Log.e("hong", "error : " + e.getMessage());

e.printStackTrace();

}

return mIcon11;

}


@Override

protected void onPostExecute(Bitmap result) {

bmImage.setImageBitmap(result);

}

}

'android' 카테고리의 다른 글

[android]URL ImageView 생성  (0) 2015.01.27
[android]AlertDialog ListView 예제  (0) 2015.01.20
[android]Test 공부중5. MOCK 객체  (0) 2015.01.12
[android]Test 공부중4.  (0) 2015.01.07
[android]Task 관련 공부중1  (0) 2015.01.07
Posted by 초코렛과자
|

1. SDk는 android.test.mock의 서브패키지로 여러 클래스를 제공한다.


2. MockContext

- 모든 매서드가 UnsupportedOperationException만 던지고 아무 동작 하지 않도록 구현되어 있다.

- 따라서, 이 클랙스를 확장해서 사용하면 테스트에 필요한 메서드의 구현을 잊었다 하더라도 예의가 던져길 것이고 이 상황을 바로 파악할 수 있다(?)

- 즉 이 클래스는 테스트할 클래스에 의존성을 주입하거나 목 또는 모니터로 사용 할 수 있다. 즉 이 클래스를 확장해서 더 높은 수준의 제어가 가능하다(?)

  

3. IsolatedContext

- 테스트를작성하다 보면 주변 컴포넌트와 상호작용을 막아서 액티비티를 격리시켜야 할 필요가 생긴다.0

- 완전히 격리시킬 수 있지만 때로는 액티비티가 제대로 동작하기 위해 꼭필요한 컴포넌트와의 상호작용도 막히는 경우가 생긴다.

- 이를 위해 안드로이드 SDK는 android.test.IsolaedContext를 제공한다

- 이 목 Context는 시스템 대부분과의 상호작용은 막지만 Services나 ContenetProviders처럼 꼭 필요한 컴포넌트와의 상호작용은 막지 않는다.


4. 파일과 데이터베이스 연산의 대안

- 테스트 하는 동안 실제 파일에 영향을 주지 않기 위해서

- android.test.RenamingDelegatingContext


5. MockContentResolver

- 실제내용과 테스트를 격리시키기 위해서 사용


'android' 카테고리의 다른 글

[android]AlertDialog ListView 예제  (0) 2015.01.20
[android]URL을 통한 Image 받아오기  (0) 2015.01.19
[android]Test 공부중4.  (0) 2015.01.07
[android]Task 관련 공부중1  (0) 2015.01.07
[android]Test 공부중3.  (0) 2015.01.06
Posted by 초코렛과자
|

단언문


1. Assertion(단언)이란?

- 판단할 수 있는 특정 상태를 평가해서 기대한 상태와 일치하지 않으면 테스트를 중단하고 예외를 던지는 메서드


2. JUni API에는 모든 테스트 케이스의 부모클래스인 Assert 클래스가 있다.


3. 테스트 하는 도중에 단언문 하나가 실패하면 AssertionFailedException이 던져진다.


4. fail() 메서드를 활용해서 메소드가 예외를 잘 던지는지 확인 할 수 있다.

public void testShouldThrowException{

try{

MainActivity.methodThatShouldThrowException();

fail("Exception was not thrown");

}catch(Exception ex){

//아무 동작 안함

}

}


5. 사용자 정의 메시지 

- 모든 assert 메서드는 String 타입의 사용자 정의 메시지를 사용 할 수 있다.

- 사용자 정의 메시지를 사용하면, 테스트 실패시 기본 메시지 대신 출력되지 때문에 테스트 결과에서 실패 내용

파악이 용이해 진다.

public void testMax(){

final int a = 1;

final int b = 2;

final int expected = b;

final int actual = Math.max(a,b);

assertEquals("Expection " + expected + "but was " + actual, expected, actual);

}


6. Static import

import static android.test.ViewAsserts.해당함수;


7. 뷰 단언문

- 보통 한드로이드 UI를 테스트하기 위해서는 뷰와 관련됨 더 전문적인 메서드가 필요

- 안드로이드는 이를 위해 뷰의 정적 또는 상대적 위치와 뷰와의 관계를 테스트 할 수 있는

android.test.ViewAsserts 클래스를 제공.


8. 추가적인 단언문 MoreAssserts 클래스

- @UiThreadTest 어노테이션 사용


9. TouchUtils 클래스

- 터치이벤트를 간편하게 생성 할 수 있게 도와줌


                                     

'android' 카테고리의 다른 글

[android]URL을 통한 Image 받아오기  (0) 2015.01.19
[android]Test 공부중5. MOCK 객체  (0) 2015.01.12
[android]Task 관련 공부중1  (0) 2015.01.07
[android]Test 공부중3.  (0) 2015.01.06
[android]Test 공부중2.  (0) 2015.01.06
Posted by 초코렛과자
|

Task : 다른 패키지의 컴포넌트까지 포함하여 같은 목적으로 실행되는 컴포넌트의 그룹


1. 태스크는 동일 목적을 위한 액티비티 집합을 하나의 잡업으로 묶음으로써 사용자에게 통합된 경험을 제공한다.


2. 태스크는 실행되는 액티비의 순서를 기억하기 위해 액티비티 스택을 유지한다.


3. 스택 관리 정책에 영향을 미치는 요소는 두 가지가 있는데, 하나는 호출하는 쪽에서 지정하는 것이고, 하나는 호출을 당하는 쪽에서 지정하는 것이다.(상당히 고급기법이라고 한다. 두 속성 조합 시, 결과가 미세하게 다르다고 함. 연구해 볼 필요가 있음)

- 매니페스트의 액티비티 속성을 조정하여 액티비티의 실행 위치나 회수를 제어한다.

- 액티비티를 실행하는 인텐트의 플래그를 통해 액티비티의 동작을 제어한다.


4. 교차생성


5. LaunchMode

- standard : 디폴트 런치모드. 여러 번 생성 될 수 있으며, 스택의 어느 곳에나 놓일 수 있다. 호출 할 때마다 새로운 인스턴스가 현재 태스크의 스택 위쪽에 새로 생성.

- singleTop : standard와 같은 속성. 하지만 스택의 최상위에 있을 때는 새로 생성되지 않으며, 기존 인스턴스가 onNewIntent 메서드로 새 인텐트를 받느다.

- singleTask : 항상 새로운 태스크를 시작하며, 스택의 루트에만 놓인다. 여러개의 인스턴스를 생성하지 않으며, 스택의 위쪽에 놓일 수 없다. 다른 액티비티를 호충하여 스택 위쪽에 생성 할 수 있다.

- singleInstance : singleTask와 같지만, 다른 액티비티를 스택 위쪽에 생성하지 않는다. 어떤 액티비티든지 항상 새로운 태스크가 생성된다.


6. 액티비티 제거 방법

- 일반적으로 finish()를 호출하거나, back 키를 누르면 자동으로 종료

- alwaysRetainTaskState : 시간이 오래 지나도 스택의 모든 액티비티를 유지. 루트 액티비티에 대해 이속성을 지정

- clearTaskOnLaunch : 시간과 상관없이 재시작 할 때마다 루트만 빼고 나머지를 모두 종료한다. 루트에만 이 속성을 지정

- finishOnTaskLaunch : 재시작 할 때 이 액ㅌ이비티를 자동으로 제거. 개별액티비티에 지정 가능.


7. 인텐트의 플래그

- FLAG_ACTIVITY_NEW_TASK : 새로운 태스크를 시작한다.

- FLAG_ACTIVITY_SINGLE_TOP : 스택의 제일 위에 있으면 다시 생성하지 않는다.

- FLAG_ACTIVITY_CLEAR_TOP : 액티비티가 스택에 있다면, 위쪽의 모든 액티비티를 제거하고 새로 생성한다.

(이 외에도 다른 플레그가 많은 것 같지만, 책에 언급되지 않았으므로, 필요할 때 마다 찾아 쓰는걸로...)

'android' 카테고리의 다른 글

[android]Test 공부중5. MOCK 객체  (0) 2015.01.12
[android]Test 공부중4.  (0) 2015.01.07
[android]Test 공부중3.  (0) 2015.01.06
[android]Test 공부중2.  (0) 2015.01.06
[android]Test 공부중.  (0) 2015.01.06
Posted by 초코렛과자
|

테스트 디버깅


1. ADT 플러그인에 메뉴[Debug As -> Android JUnit Test]를 사용해서 테스트안에 중단점을 설정하고 디버깅.

- 중단점을 활성화하기 위해서는 편집기에서 원하는 라인을 선택하고 메뉴[Run -> Toggle Line Breakpoint]를 누르면 된다.

'android' 카테고리의 다른 글

[android]Test 공부중5. MOCK 객체  (0) 2015.01.12
[android]Test 공부중4.  (0) 2015.01.07
[android]Task 관련 공부중1  (0) 2015.01.07
[android]Test 공부중2.  (0) 2015.01.06
[android]Test 공부중.  (0) 2015.01.06
Posted by 초코렛과자
|

IDE - 이클립스


* Android Test 프로젝트 만드는 순서

1. 안드로이드 프로젝트 생성

2. 안드로이드 테스트 프로젝트 생성

3. 테스트 프로젝트에서 JUnit case 생성


* 테스트 어노테이션 ( 무슨말인지 모르겠다)

@SmallTest : Small 테스트 분류로 실행되는 테스트라고 명시한다.

@MediumTest : Medium 테스트 분류로 실행되는 테스트라고 명시한다.

@LargeTest : Large 테스트 분류로 실행되는 테스트라고 명시한다.

@Smoke : 스모크 테스트 분류로 실행되는 테스트라고 명시한다.

@FlakyTest : InstrumentationTestCase 클래스의 테스트 메서드에서 사용. 이 어노테이션이 명시된 테스트가 실패하면 테스트 메서드가 다시 실행된다. 실패에 의한 재실행 횟수는 임의로 정할 수 있으며 기본값은 1이다. 보통 예측하기 힘든 외부 요인으로 인해 실패하는 변덕스러운 테스트에 유용하다. 

예를 들어 재실행 횟수를 4로 설정 하려면 @FlakyTest(tolerance=4)

@UiThreadTest : nstrumentationTestCase 클래스의 테스트 메서드에서 사용. 메인 쓰레드에서 실행

@Suppress : 이 어노테이션이 사용된 클래스나 매서드는 테스트에 포함되지 않는다.


* 테스트 프로젝트에서 AndroidManifest.xml 에서 Instrumentation에 Label에 이름을 줄 수 잇다.


* 커맨드라인에서 테스트 실행

1.  am(Activity Manager) instrument 명령어

am instrument [flags] <COMPONENT>

-r: print raw results (otherwise decode REPORT_KEY_STREAMERESULT)

-e <NAME> <VALUE>: set argument <NAME> to <VALUE>

-p <FILE>: write profiling data to<FILE>

-w: wait for instrumentation to finish before returning

2. 각 옵션에 대한 설명

-r : 결과를 모두 출력. 성능 측정을 위한 자료수집에 유용

-e <NAME> <VALUE> : Name을 Value로 설정한다. 일반적으로 인자는 <name, value> 쌍이다.

-p <FILE> : 측정 데이터를 외부 파일에 저장한다.

-w : 종료하기 전에 측정기능이 끝나기를 기다린다. 보통 이 옵션을 쓰지 않으면 테스트 결과를 볼 수 없으므로 필수는 아니지만 꽤 유용하다.


* 종류별로 특정 테스트 실행

-e unit true : 단위테스트 모두 수행

-e func true : 기능 테스트 모두 수행.

-e perf true : 성능 테스트를 함께 실행한다.

-e size {small | medium | large} : 테스트 어노테이션에 따라서, small, medium, large 분류의 테스트를 실행한다.

-e annotation <annotation-name> : 해당 어노테이션 분류에 속한 모든 테스트를 실행한다. 이 옵션은 size 옵션과 같이 사용 할 수 없다.


* 사용자 정의 어노테이션 생성

/**

 * Annotation for very important tests.

 * 

 * @author diego

 * 

 * */

public @interface VeryImportantTest {


}






'android' 카테고리의 다른 글

[android]Test 공부중5. MOCK 객체  (0) 2015.01.12
[android]Test 공부중4.  (0) 2015.01.07
[android]Task 관련 공부중1  (0) 2015.01.07
[android]Test 공부중3.  (0) 2015.01.06
[android]Test 공부중.  (0) 2015.01.06
Posted by 초코렛과자
|

[android]Test 공부중.

android 2015. 1. 6. 11:17

1. 액티비티 생명주기 이벤트는 정확하게 테스트 해야 한다.

2. Configuration 변경 이벤트도 꼭 확인해야 한다.

3. 데이터베이스와 파일시스템 연산은 정확하게 수행되는지 반드시 테스트해야 한다.

4. 디바이스 특성 테스트

- 네트워크 환경, 화면 밀도, 화면 해상도, 화면 크기, 센서 여부, 키보드와 입력장치, GPS, 외장메모리

5. 실제 디바이스와 가상 디바이스에서 테스트

6. 개발 초기 단계에서 부터 테스트 코드 작성

7. 단위 테스트 : 프로그래머가 프로그래머를 위해 프로그래밍 언어로 작성한 소프트웨어 테스트

8. 테스트 하는 부분과 그 외 부분을 분리하기 위해서 단위테스트와 목(MOCK) 객체를 함께 사용

9. JUnit : 안드로이드 단위 테스트의 사실상 표준 - 안드로이드는 JUnit3을 사용

(어노테이션과 자체검증을 지원하지 않는다??)

10. 테스트 픽스쳐(fixture) : 테스트 수행의 기초가 되는 정보들의 모음, 모든 세트스 케이스에서 공유하며 테스트 설계 시 핵심적인 역할을 담당한다.

11. setUp() 메서드 : 픽스터를 초기화 할 때 사용

12. tearDown() 메서드 : 픽스터를 해제 할 때 사용, JUnit은 매우 크고 오래 걸리는 테스트가 실행 중인 동안에는 전체 테스트가 끝날 때까지 어떤 인스턴스도 가비지 컬렉션이 되지 않는다. 따라서 테스트에서 Serviecs와 ContentProviders 등의 제한된 리소스나 외부 리소스를 사용하는 경우 반드시 해제를 해줘야 한다.

사용이 끝난 객체는 tearDown()에서 null로 명백하게 초기화 해야 한다.

13. 사전조건 테스트 : trstPreconditions() 를 사용하는 것은 관례적인 측면. 관리 차원

14. JUnit의 assert메소드

- assertEquals()

- assertFalse()

- assertNotNull()

- assertNotSam()

- assertNull()

- assertSame()

- assertTrue()

- fail()

추가 테스크 클래스

- MoreAsserts

- ViewAsserts

15. 목(Mock) 객체 : 테스트를 실제 환경과 격리시키기 위해 실제 객체 대신 사용하는, 흉내 낸 객체

- 모든 메서드가 UnsupportedOperationException을 반환하는 스텁(stub)일 뿐(??) 

(무슨 말인지 전혀 모르겠음)

16. UI 테스트 : 메인 스레드만 UI를 변경 할 수 있다. 따라서 @UIThreadTest라는 특별한 어노테이션 사용하면 테스트가 메인 스레드에서 실행되 UI를 변경 할 수 있다.

17. 이클립스 등 IDE, ant 지원

18. 통합테스트 : 안드로이드 테스팅 프레임워크가 통합이 필요한 컴포넌트를 테스트하기 위한 전문적인 테스트를 제공

19. 기능 또는 인수 테스트

20. 성능 테스트

21. 시스템 테스트

22. 안드로이드 테스팅 프레임워크 주요 기능

- 시스템 객체에 접근 가능하도록 JUnit 프레임워크를 확장

- 테스트가 애플리케이션을 제어하고 검사 할 수 있도록 측정 프레임워크 제공

- 안드로이드 시스템 객체의 목 버전 제공

- 테스트 한 개나 여러 개의 테스트로 이루어진 테스트 스위트를 실행하고 측정 기능 포함 여부가 선택 가능한 도구를 제공

- 테스트와 테스트 프로젝트 관리를 위한 이클립스 ADT 플러그인 및 커멘드라인 기능 제공

23. 측정(Instrumentation)프레임워크 : 테스트하는 어플리케이션을 제어하고 실행에 필요한 컴포넌트의 목 객체를 생성


우선 여기까지



'android' 카테고리의 다른 글

[android]Test 공부중5. MOCK 객체  (0) 2015.01.12
[android]Test 공부중4.  (0) 2015.01.07
[android]Task 관련 공부중1  (0) 2015.01.07
[android]Test 공부중3.  (0) 2015.01.06
[android]Test 공부중2.  (0) 2015.01.06
Posted by 초코렛과자
|

아 모르겠다.. Grails 환경 설정 하다 하루가 가는구나 프로젝트를 못 만들겠어!!

Posted by 초코렛과자
|

다국어 지원을 위한 properties.


<spring:message code="movie.title">


properties에 등록한 movie.title 에 해당하는 값을 찾아온다. 

'Javascript' 카테고리의 다른 글

[Javascript_01]Meteor Framework  (0) 2014.10.07
Posted by 초코렛과자
|

이런게 있다고 한다. 조사는 내일부터 임시저장.

'Javascript' 카테고리의 다른 글

[Javascript_02]message properties  (0) 2014.10.16
Posted by 초코렛과자
|