Programación de dardos - Prueba unitaria
La prueba unitaria implica probar cada unidad individual de una aplicación. Ayuda al desarrollador a probar pequeñas funcionalidades sin ejecutar toda la compleja aplicación.
El dardo external library denominado "prueba" proporciona una forma estándar de escribir y ejecutar pruebas unitarias.
La prueba de la unidad de dardos implica los siguientes pasos:
Step 1: Installing the "test" package
Para instalar paquetes de terceros en el proyecto actual, necesitará el pubspec.yamlarchivo. Instalartest packages, primero haga la siguiente entrada en el pubspec.yaml archivo -
dependencies:
test:
Después de realizar la entrada, haga clic con el botón derecho en el pubspec.yamlfile y obtenga dependencias. Instalará el"test"paquete. A continuación se muestra una captura de pantalla para el mismo en elWebStorm Editor.
Los paquetes se pueden instalar desde command linetambién. Escriba lo siguiente en la terminal:
pub get
Step 2: Importing the "test" package
import "package:test/test.dart";
Step 3 Writing Tests
Las pruebas se especifican mediante la función de nivel superior test(), mientras test assertions están hechos usando el expect()función. Para utilizar estos métodos, deben instalarse comopub dependencia.
Sintaxis
test("Description of the test ", () {
expect(actualValue , matchingValue)
});
los group()La función se puede utilizar para agrupar pruebas. La descripción de cada grupo se agrega al comienzo de las descripciones de su prueba.
Sintaxis
group("some_Group_Name", () {
test("test_name_1", () {
expect(actual, equals(exptected));
});
test("test_name_2", () {
expect(actual, equals(expected));
});
})
Ejemplo 1: Una prueba aprobatoria
El siguiente ejemplo define un método Add(). Este método toma dos valores enteros y devuelve un entero que representa elsum. Para probar estoadd() método -
Step 1 - Importar el test paquete como se indica a continuación.
Step 2 - Defina la prueba usando el test()función. Aquí eltest() la función usa el expect() función para hacer cumplir una afirmación.
import 'package:test/test.dart';
// Import the test package
int Add(int x,int y)
// Function to be tested {
return x+y;
}
void main() {
// Define the test
test("test to check add method",(){
// Arrange
var expected = 30;
// Act
var actual = Add(10,20);
// Asset
expect(actual,expected);
});
}
Debería producir lo siguiente output -
00:00 +0: test to check add method
00:00 +1: All tests passed!
Ejemplo 2: una prueba fallida
los subtract()El método definido a continuación tiene un error lógico. El seguimientotest verifica lo mismo.
import 'package:test/test.dart';
int Add(int x,int y){
return x+y;
}
int Sub(int x,int y){
return x-y-1;
}
void main(){
test('test to check sub',(){
var expected = 10;
// Arrange
var actual = Sub(30,20);
// Act
expect(actual,expected);
// Assert
});
test("test to check add method",(){
var expected = 30;
// Arrange
var actual = Add(10,20);
// Act
expect(actual,expected);
// Asset
});
}
Output - El caso de prueba para la función add() pasa pero la prueba para subtract() falla como se muestra a continuación.
00:00 +0: test to check sub
00:00 +0 -1: test to check sub
Expected: <10>
Actual: <9>
package:test expect
bin\Test123.dart 18:5 main.<fn>
00:00 +0 -1: test to check add method
00:00 +1 -1: Some tests failed.
Unhandled exception:
Dummy exception to set exit code.
#0 _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:938)
#1 _microtaskLoop (dart:async/schedule_microtask.dart:41)
#2 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#3 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:394)
#4 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:414)
#5 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)
Agrupación de casos de prueba
Puede agrupar el test casespara que le agregue más significado al código de prueba. Si tienes muchostest cases esto ayuda a escribir un código mucho más limpio.
En el código dado, estamos escribiendo un caso de prueba para el split() función y la trimfunción. Por lo tanto, agrupamos lógicamente estos casos de prueba y los llamamosString.
Ejemplo
import "package:test/test.dart";
void main() {
group("String", () {
test("test on split() method of string class", () {
var string = "foo,bar,baz";
expect(string.split(","), equals(["foo", "bar", "baz"]));
});
test("test on trim() method of string class", () {
var string = " foo ";
expect(string.trim(), equals("foo"));
});
});
}
Output - La salida agregará el nombre del grupo para cada caso de prueba como se indica a continuación -
00:00 +0: String test on split() method of string class
00:00 +1: String test on trim() method of string class
00:00 +2: All tests passed