유닛 테스트 작성 방법
저 같은 경우에는 2진수 합계를 하는 수업이 있어요. 된다byte[]
summary arrays, summary 및 arrays arrays arrays arrays arrays arrays arrays arrays arrays arrays arrays arrays arrays arrays arrays 。
정상적인 경우에 대해 올바른 입력을 사용하여 예상 및 원하는 출력을 정의합니다.
이제 클래스를 선언하여 테스트를 구현하고 임의의 이름(일반적으로 TestAddingModule과 같은 것)을 지정하고 testAdd 메서드(아래와 같은 것)를 추가합니다.
- 메서드를 작성하고 그 위에 @Test 주석을 추가합니다.
- 와 바이너리 합계를 합니다.
assertEquals(expectedVal,calculatedVal)
. 방법을 실행하여 테스트합니다(Eclipse에서 마우스 오른쪽 버튼을 클릭하고 Run as → JUnit test를 선택합니다).
//for normal addition @Test public void testAdd1Plus1() { int x = 1 ; int y = 1; assertEquals(2, myClass.add(x,y)); }
필요에 따라 다른 케이스를 추가합니다.
- 정수 오버플로가 있는 경우 이진합이 예기치 않은 예외를 발생시키지 않는지 테스트합니다.
메서드가 Null 입력을 정상적으로 처리하는지 테스트합니다(아래 예).
//if you are using 0 as default for null, make sure your class works in that case. @Test public void testAdd1Plus1() { int y = 1; assertEquals(0, myClass.add(null,y)); }
인텔리J와 이클립스 모두에게 이 글을 제공합니다.
이클립스:
프로젝트의 유닛 테스트를 작성하려면 다음 단계를 따르십시오(이 테스트를 작성하기 위해 이클립스를 사용합니다).
1- [새로운] -> [ Java Project ]을 클릭합니다.
2- 프로젝트 이름을 적고 마침을 클릭합니다.
3- 프로젝트를 오른쪽 클릭합니다.그런 다음 [New] -> [ Class
4- 클래스 이름을 적고 마침을 클릭합니다.
그런 다음 다음과 같이 수업을 완료합니다.
public class Math {
int a, b;
Math(int a, int b) {
this.a = a;
this.b = b;
}
public int add() {
return a + b;
}
}
5 - [파일]-> [새로 만들기]-> [ JUnit Test Case ]을 클릭합니다.
6 - setUp()을 체크하고 finish를 클릭합니다.SetUp()은 테스트를 초기화하는 장소입니다.
7- 확인을 클릭합니다.
8- 여기서는 단순히 7과 10을 더합니다.그래서 저는 정답이 17이 될 것으로 예상합니다.다음과 같이 테스트 클래스를 완료합니다.
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class MathTest {
Math math;
@Before
public void setUp() throws Exception {
math = new Math(7, 10);
}
@Test
public void testAdd() {
Assert.assertEquals(17, math.add());
}
}
9 - 패키지 탐색기에서 테스트 클래스를 클릭하고 [Run as -]> [ JUnit Test ]을 클릭합니다.
10- 테스트 결과입니다.
IntelliJ: 스크린샷에는 IntelliJ IDEA 커뮤니티 2020.1을 사용했습니다.또한 이러한 단계를 수행하기 전에 jre를 설정해야 합니다.JDK 11.0.4를 사용하고 있습니다.
1- 프로젝트 -> 새 -> 디렉토리의 메인 폴더를 오른쪽 클릭합니다.테스트 폴더를 마우스 오른쪽 버튼으로 클릭하고 적절한 패키지를 만듭니다.테스트 폴더를 오른쪽 클릭하여 적절한 패키지를 만듭니다.원래 클래스와 동일한 패키지 이름을 만들 것을 제안합니다.그런 다음 test directory -> mark directory를 -> test source root로 우클릭합니다.3 - test directory의 오른쪽 패키지에 Java 클래스를 작성해야 합니다(Test.java 사용을 권장합니다). 4- 생성된 클래스에 '@Test'를 입력합니다.그런 다음 IntelliJ에서 제공하는 옵션 중 클래스 경로에 'JUnitx' 추가를 선택합니다. 5. 테스트 클래스에 테스트 방법을 쓰십시오.메서드 시그니처는 다음과 같습니다.
@Test
public void test<name of original method>(){
...
}
다음과 같이 주장할 수 있습니다.
Assertions.assertTrue(f.flipEquiv(node1_1, node2_1));
추가한 Import는 다음과 같습니다.
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
이게 제가 쓴 시험입니다.
다음과 같이 메서드를 확인할 수 있습니다.
Assertions.assertEquals(<Expected>,<actual>);
Assertions.assertTrue(<actual>);
...
유닛 테스트를 실행하려면 테스트를 오른쪽 클릭하여[파일명을 지정하여 실행]을 클릭합니다.
테스트에 합격하면 결과는 다음과 같습니다.
도움이 됐으면 좋겠어요.프로젝트 구조는 GitHub https://github.com/m-vahidalizadeh/problem_solving_project에서 확인할 수 있습니다.
이것은 매우 일반적인 질문이고 대답할 수 있는 많은 방법이 있다.
JUnit을 사용하여 테스트를 작성하려면 테스트 케이스 클래스를 만들고 테스트 대상 클래스/모듈의 특정 기능을 테스트하는 개별 테스트 메서드를 만들어야 합니다(일반적으로 단일 테스트 케이스 클래스는 테스트 대상인 단일 "실전" 클래스와 관련지어져 있습니다).이 메서드 내에서는 다양한 조작과 com이 실행됩니다.올바른 것으로 결과를 깎아내다가능한 한 많은 코너 케이스를 커버하는 것이 특히 중요합니다.
구체적인 예에서는 예를 들어 다음을 테스트할 수 있습니다.
- 두 양수 사이의 간단한 덧셈입니다.이 값을 추가한 후 예상한 결과를 확인합니다.
- 양수와 음수 사이의 덧셈(첫 번째 인수 기호가 있는 결과를 반환합니다).
- 양수와 음수 사이의 덧셈(두 번째 인수 기호가 있는 결과를 반환합니다).
- 두 음수 사이의 덧셈입니다.
- 오버플로를 초래하는 추가입니다.
결과를 확인하려면 org.junit에서 다양한 assertXX 메서드를 사용합니다.클래스 아사트(편리를 위해 'import static org.junit'을 수행할 수 있습니다).Assert.*')이러한 메서드는 특정 조건을 테스트하고 검증되지 않으면 테스트에 불합격합니다(옵션으로 특정 메시지 사용).
이 경우 테스트 사례 클래스의 예(메서드 내용이 정의되어 있지 않음):
import static org.junit.Assert.*;
public class AdditionTests {
@Test
public void testSimpleAddition() { ... }
@Test
public void testPositiveNegativeAddition() { ... }
@Test
public void testNegativePositiveAddition() { ... }
@Test
public void testNegativeAddition() { ... }
@Test
public void testOverflow() { ... }
}
유닛 테스트 작성에 익숙하지 않은 경우 대신 애드혹테스트를 작성하여 코드를 테스트합니다.그 후 검증합니다(예를 들어 키보드를 사용하여 입력한 인수를 받아들여 결과를 출력하는 간단한 메인 메서드를 작성하고 결과가 올바른 경우 계속 값을 입력하고 자신을 검증합니다).이러한 테스트를 위의 형식으로 작성하여 수동으로 수행하는 대신 올바른 assertXX 방식으로 결과를 검증하는 것으로 시작할 수 있습니다.이렇게 하면 수동 테스트를 수행해야 하는 경우보다 훨씬 쉽게 테스트를 재실행할 수 있습니다.
@CoolBeans가 언급한 것처럼 jUnit을 살펴봅니다.다음은 jUnit 4.x를 시작하는 간단한 튜토리얼입니다.
마지막으로 테스트 및 테스트 주도 개발(TDD)에 대해 자세히 알고 싶다면 Kent Beck의 다음 책을 참조하십시오.예를 들어 테스트 주도의 개발.
다른 답변에서는 JUnit을 사용하여 테스트 클래스를 설정하는 방법을 보여 줍니다.JUnit만이 Java 테스트 프레임워크는 아닙니다.그러나 프레임워크 사용에 대한 기술적인 세부 사항에 초점을 맞추면 행동의 지침이 되어야 할 가장 중요한 개념이 손상되므로 이에 대해 설명하겠습니다.
(모든 종류의 것에 대한) 테스트는 어떤 것(SUT, System Under Test)의 실제 동작과 예상되는 동작을 비교합니다.
자동 테스트는 컴퓨터 프로그램을 사용하여 수행할 수 있습니다.이러한 비교는 유연성이 없고 인텔리전트하지 않은 컴퓨터 프로그램에 의해 이루어지기 때문에 예상되는 동작을 정확하고 명확하게 알 필요가 있습니다.
프로그램 또는 프로그램의 일부(클래스 또는 메서드)가 수행할 것으로 예상되는 것은 그 사양입니다.따라서 소프트웨어를 테스트하려면 SUT에 대한 사양이 있어야 합니다.이는 명시적인 설명일 수도 있고 예상되는 내용에 대한 암묵적인 지정일 수도 있습니다.
따라서 자동 단위 검정을 수행하려면 검사 중인 클래스 또는 방법을 정확하고 명확하게 지정해야 합니다.
하지만 당신이 코드를 작성하기 시작할 때 그 사양이 필요했어요.그래서 테스트의 일부는 여러분이 SUT의 한 줄도 작성하기 전에 실제로 시작됩니다.Test Drived Development(TDD; 테스트 주도 개발)의 테스트 기법은 이 아이디어를 극단적으로 반영하고 있으며, 테스트할 코드를 작성하기 전에 유닛 테스트 코드를 작성해야 합니다.
단위 테스트 프레임워크는 어설션을 사용하여 SUT를 테스트합니다.어설션은 논리적인 표현입니다.
boolean
결과 유형; 술어)는 다음과 같아야 합니다.true
SUT의 약자따라서 사양은 어설션으로 표현(또는 다시 표현)되어야 합니다.명세서를 어설션으로 표현하기 위한 유용한 기술은 계약에 의한 설계이다.이러한 사양은 사후 조건과 관련되어 있습니다.사후조건은 메서드 또는 생성자에서 복귀한 후 SUT의 공개적인 상태에 대한 어설션이다.일부 메서드에는 불변인 사후 조건이 있습니다.이것은 메서드 실행 전후에 참인 술어입니다.클래스에는 불변량도 있다고 할 수 있습니다.불변량은 클래스의 모든 생성자 및 메서드의 전제 조건이며, 따라서 항상 참이어야 합니다.사후 조건(및 불변)은 홍보 가시 상태로만 표현된다.
public
그리고.protected
필드, 에 의해 반환된 값public
그리고.protected
메서드(예: getters) 및 메서드에 전달된 개체의 공개 상태(참조 기준)가 표시됩니다.
많은 초보자들이 코드를 테스트하는 방법을 묻는 질문을 게시하고 코드를 제시하지만 해당 코드의 사양은 기재하지 않습니다.이 논의에서 알 수 있듯이, 이러한 질문에 대해 좋은 답변을 하는 것은 불가능합니다. 왜냐하면 기껏해야 잠재적인 앤서러는 사양을 추측해야 하고, 부정확할 수 있기 때문입니다.질문자는 사양의 중요성을 모르는 것이 분명하기 때문에 테스트 코드를 작성하기 전에 여기서 설명한 기본을 이해할 필요가 있는 초보자입니다.
언급URL : https://stackoverflow.com/questions/8751553/how-to-write-a-unit-test
'programing' 카테고리의 다른 글
vue composition api는 이름 경합을 어떻게 해결합니까? (0) | 2022.08.16 |
---|---|
GSON - 날짜 형식 (0) | 2022.08.16 |
char *(char 배열)의 실제 길이와 전체 길이를 얻는 방법 (0) | 2022.08.16 |
Java에서 int에서 Long으로 변환하려면 어떻게 해야 하나요? (0) | 2022.08.12 |
구문 오류:Browserify에서 예기치 않은 토큰... (82:8) (0) | 2022.08.12 |