Unit Testing và Instrumented Testing | Phần 1
Hai loại bài kiểm tra đơn vị
- Kiểm tra JVM (Kiểm tra đơn vị cục bộ)
- Kiểm tra trên thiết bị (Instrumentation Test)
- → Kiểm tra giao diện người dùng (Tương tác với lượt xem)
- → Kiểm tra không phải giao diện người dùng (Nội dung, Trình quản lý nội dung, v.v.
Kiểm tra đơn vị là phương pháp kiểm tra các đơn vị mã riêng lẻ, đây là phương pháp kiểm tra phần mềm trong đó các phần nhỏ nhất có thể kiểm tra của ứng dụng, được gọi là đơn vị, được kiểm tra riêng lẻ và độc lập để hoạt động đúng. Loại thử nghiệm này được sử dụng để xác minh rằng các đơn vị mã riêng lẻ, chẳng hạn như các phương thức và chức năng, hoạt động như dự kiến. Các bài kiểm tra đơn vị thường được tự động hóa và được chạy như một phần của quy trình xây dựng. Chúng nhanh, dễ viết và có thể chạy thường xuyên, cung cấp phản hồi nhanh về chất lượng của mã.
Trong Android, khung kiểm tra đơn vị được cung cấp bởi JUnit, đây là khung kiểm tra được sử dụng rộng rãi cho Java. JUnit được bao gồm trong SDK Android, vì vậy có thể dễ dàng thêm nó vào bất kỳ dự án Android nào.
Đây là một ví dụ về bài kiểm tra đơn vị đơn giản trong Android bằng JUnit:
import org.junit.Test
import org.junit.Assert.*
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}
Một ví dụ khác, bạn có thể kiểm tra một hàm mong đợi một tham số và trả về một giá trị:
class Calculator {
fun add(a: Int, b: Int): Int = a + b
}
class CalculatorTest {
private val calculator = Calculator()
@Test
fun add_isCorrect() {
assertEquals(4, calculator.add(2, 2))
}
}
Tóm lại, Kiểm thử đơn vị là một phương pháp kiểm thử phần mềm trong đó các phần nhỏ nhất có thể kiểm tra được của một ứng dụng, được gọi là các đơn vị, được kiểm tra riêng lẻ và độc lập để hoạt động bình thường. Trong Android, khung kiểm tra đơn vị được cung cấp bởi JUnit, đây là khung kiểm tra được sử dụng rộng rãi cho Java. JUnit được bao gồm trong Android SDK, vì vậy nó có thể dễ dàng được thêm vào bất kỳ dự án Android nào, nó là một phần thiết yếu của bất kỳ quy trình phát triển ứng dụng Android nào, nó giúp đảm bảo rằng mã hoạt động chính xác và giúp dễ nắm bắt và sửa lỗi sớm trong quá trình phát triển.
Lợi ích của kiểm thử đơn vị:
- Kiểm tra đơn vị tăng độ tin cậy trong việc thay đổi/bảo trì mã. Nếu các bài kiểm tra đơn vị tốt được viết và nếu chúng được chạy mỗi khi bất kỳ mã nào được thay đổi, chúng tôi sẽ có thể kịp thời phát hiện bất kỳ lỗi nào do thay đổi gây ra. Ngoài ra, nếu các mã đã được tạo ít phụ thuộc lẫn nhau hơn để có thể thực hiện thử nghiệm đơn vị, thì tác động ngoài ý muốn của các thay đổi đối với bất kỳ mã nào sẽ ít hơn.
- Mã có thể tái sử dụng nhiều hơn. Để có thể thực hiện thử nghiệm đơn vị, các mã cần phải được mô-đun hóa. Điều này có nghĩa là các mã dễ sử dụng lại hơn.
- Phát triển nhanh hơn bằng cách giảm các lỗi có thể tìm thấy trong quá trình kiểm tra hệ thống hoặc kiểm tra chấp nhận.
- Gỡ lỗi rất dễ dàng. Khi thử nghiệm không thành công, chỉ những thay đổi mới nhất cần được gỡ lỗi. Với thử nghiệm ở cấp độ cao hơn, các thay đổi được thực hiện trong khoảng thời gian vài ngày/tuần/tháng cần được quét.
- Mã đáng tin cậy hơn.
@Test
fun pallindrome{
//Arrange
//Act
//Assert
}
Như bạn có thể thấy val sample = sample() là Sắp xếp
và val result = sample.isPallindrome(“xin chào”) là Đạo luật
và assertEquals(false,result) đây là Assert
ở đây false là giá trị mong đợi và kết quả là giá trị chúng ta nhận được thông qua hàm sau đó nó sẽ khớp với các giá trị này dựa trên kết quả mà trường hợp thử nghiệm sẽ vượt qua hoặc thất bại
tất cả ba điều này làm cho Logic kiểm tra
Tôi sẽ kiểm tra một chuỗi nơi tôi sẽ kiểm tra xem một chuỗi có phải là màu nhạt hay không
package com.example.unittesting.utils
import org.junit.Assert.*
import org.junit.Test
class sampleTest {
@Test
fun isPallindrome() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("hello")
//Assert
assertEquals(false,result)
}
@Test
fun isPallindrome_level_expectedTrue() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("level")
//Assert
assertEquals(true,result)
}
@Test
fun isPallindrome_civic_expectedTrue() {
//Arrange
val sample = sample()
//Act
val result = sample.isPallindrome("civic")
//Assert
assertEquals(true,result)
}
}
Như bạn có thể thấy tất cả các trường hợp thử nghiệm đã được thông qua theo giá trị mong đợi
Trong bài viết tiếp theo chúng ta sẽ xem Instrumented testing để biết thêm thông tin về Unit testing xem qua các tài liệu này
Về tôi
CHÀO,
Tôi là Abhay Saini, đang là Nhà phát triển Android tại AppyHigh. Tôi là sinh viên năm cuối tại Học viện Công nghệ Thông tin Ấn Độ, Una . Một sinh viên mới nhiệt tình với các kỹ năng lãnh đạo và năng động, học hỏi nhanh và theo đuổi B.Tech trong Công nghệ thông tin.
Nếu bạn có bất kỳ vấn đề nào liên quan đến Android, chỉ cần ping tôi trên [email protected] hoặc Linkedin
Chúc một ngày tốt lành!!

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































