Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

195
Views
Cómo realizar una prueba unitaria de un programa de consola que lee entradas y escribe en la consola

Digamos que tengo un programa simple como

 using System; public class Solution { public static void Main(string[] args) { int[] arr = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse); Array.Sort(arr); Console.WriteLine(string.Join(" ", arr)); } }

que quiero probar en un proyecto separado como

 [TestMethod] public void TwoNumbersDescendingAreSwapped() { string input = "2 1"; string expectedOutput = "1 2"; // ... ??? Assert.AreEqual(expectedOutput, actualOutput); }

¿Es posible hacer eso sin usar realmente el .exe de Solution?

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Mueve el código que hace todo el trabajo en Main() a su propia clase y método:

 public static class InputConverter { public static string ConvertInput(string input) { int[] arr = Array.ConvertAll(input.Split(' '), int.Parse); Array.Sort(arr); return string.Join(" ", arr); } }

Su Main() entonces se convierte en:

 public static void Main(string[] args) { var input = Console.ReadLine(); var output = InputConverter.ConvertInput(input); Console.WriteLine(output); }

Ahora puede probar ConvertInput() sin depender de las funciones de escritura y lectura de Console :

 [TestMethod] public void TwoNumbersDescendingAreSwapped() { // Arrange var input = "2 1"; var expectedOutput = "1 2"; // Act var actualOutput = InputConverter.ConvertInput(input); // Assert Assert.AreEqual(expectedOutput, actualOutput); }

Como comentario aparte: la forma en que transmite sus argumentos parece como si estuviera garantizando que la entrada siempre será lo que espera que sea. ¿Qué sucede cuando el usuario pasa algo totalmente diferente a las representaciones de cadenas de enteros? Debe validar la entrada en InputConverter.ConvertInput() y crear cursos de acción apropiados basados en eso (lanzar una Exception , devolver null , depende de lo que esté buscando). Luego, también deberá realizar pruebas unitarias en esos escenarios para asegurarse de que ConvertInput() funcione como se espera en todos los casos.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!