คุณสามารถใช้ @TempDir
คำอธิบายประกอบ (JUnit 5.4+) อธิบายไว้ใน §2.20.1 ของคู่มือผู้ใช้ JUnit 5 จากคู่มือผู้ใช้ (เน้นของฉัน):
ส่วนขยาย TempDirectory
ในตัวใช้เพื่อสร้างและล้างไดเร็กทอรีชั่วคราวสำหรับการทดสอบแต่ละรายการหรือการทดสอบทั้งหมดในคลาสการทดสอบ มันถูกลงทะเบียนตามค่าเริ่มต้น หากต้องการใช้งาน ให้ใส่คำอธิบายประกอบในฟิลด์ที่ไม่ใช่ส่วนตัวประเภท java.nio.file.Path
หรือ java.io.File
ด้วย @TempDir
หรือเพิ่มพารามิเตอร์ประเภท java.nio.file.Path
หรือ java.io.File
ที่มีคำอธิบายประกอบด้วย @TempDir
ให้กับวิธีวงจรชีวิตหรือวิธีทดสอบ
หมายเหตุ: ส่วนขยายนี้ถูกเพิ่มเข้ามาในเวอร์ชัน 5.4
และขณะนี้ (ณ วันที่ 5.7.2
) อยู่ในช่วงทดลอง
ตัวอย่างการใช้ฟิลด์อินสแตนซ์:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.nio.file.Path; // or use java.io.File
class SomeTests {
@TempDir
Path directory; // must be non-private
}
ตัวอย่างการใช้พารามิเตอร์ของวิธีทดสอบ:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.nio.file.Path; // or use java.io.File
class SomeTests {
@Test
void testFoo(@TempDir Path directory) {
// do test...
}
}
หมายเหตุ: ไม่รองรับพารามิเตอร์ตัวสร้าง
เมื่อสร้างและลบไดเรกทอรีจะมีการอธิบายไว้ใน Javadoc ของ @TempDir
:
การสร้างไดเรกทอรีชั่วคราว
ไดเร็กทอรีชั่วคราวจะถูกสร้างขึ้นก็ต่อเมื่อฟิลด์ในคลาสทดสอบหรือพารามิเตอร์ในเมธอดวงจรการใช้งานหรือวิธีทดสอบมีคำอธิบายประกอบด้วย @TempDir
หากประเภทฟิลด์หรือประเภทพารามิเตอร์ไม่ใช่ทั้ง Path
หรือ File
หรือหากไม่สามารถสร้างไดเร็กทอรีชั่วคราวได้ ExtensionConfigurationException
หรือ ParameterResolutionException
จะถูกส่งออกไปตามความเหมาะสม นอกจากนี้ ParameterResolutionException
จะถูกส่งออกไปสำหรับพารามิเตอร์ตัวสร้างที่มีคำอธิบายประกอบด้วย @TempDir
ขอบเขตไดเรกทอรีชั่วคราว
ขอบเขตของไดเร็กทอรีชั่วคราวขึ้นอยู่กับตำแหน่งที่พบคำอธิบายประกอบ @TempDir
แรกเมื่อดำเนินการคลาสทดสอบ ไดเร็กทอรีชั่วคราวจะถูกแชร์โดยการทดสอบทั้งหมดในคลาสเมื่อมีคำอธิบายประกอบอยู่ในฟิลด์ static
หรือบนพารามิเตอร์ของเมธอด @BeforeAll
มิฉะนั้น ตัวอย่างเช่น เมื่อมีการใช้ @TempDir
เฉพาะในช่องอินสแตนซ์หรือในพารามิเตอร์ในวิธีทดสอบ @BeforeEach
หรือ @AfterEach
การทดสอบแต่ละครั้งจะใช้ไดเร็กทอรีชั่วคราวของตัวเอง
การลบไดเรกทอรีชั่วคราว
เมื่อถึงจุดสิ้นสุดของขอบเขตของไดเร็กทอรีชั่วคราว เช่น เมื่อวิธีทดสอบหรือคลาสเสร็จสิ้นการดำเนินการ JUnit จะพยายามลบไฟล์และไดเร็กทอรีทั้งหมดในไดเร็กทอรีชั่วคราวแบบวนซ้ำ และสุดท้ายคือไดเร็กทอรีชั่วคราวนั่นเอง ในกรณีที่การลบไฟล์หรือไดเร็กทอรีล้มเหลว IOException
จะถูกโยนทิ้งซึ่งจะทำให้การทดสอบหรือคลาสการทดสอบล้มเหลว
person
Slaw
schedule
15.06.2019