Ich habe in den letzten Monaten viel über TDD gelesen und bin dann zu einem einfachen Beispiel übergegangen. Ich bin mir einfach nicht sicher, ob ich in der Praxis nach den richtigen Dingen teste. Hier werden die Tests für eine benutzerdefinierte Daten Annotation zur Validierung von E-Mails:Neu bei TDD in asp.NET, bin ich auf dem richtigen Weg, Tests zu schreiben?
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace MembershipTest.Tests
{
[TestClass]
public class CustomDataAnnotationsTest
{
[TestMethod]
public void CustomDataAnnotations_Email_ReturnTrueIfNull()
{
// Arrange
EmailAttribute attribute = new EmailAttribute();
// Act
bool result = attribute.IsValid(null);
// Assert
Assert.AreEqual(true, result);
}
[TestMethod]
public void CustomDataAnnotations_Email_ReturnFalseIfInvalid()
{
// Arrange
EmailAttribute attribute = new EmailAttribute();
// Act
bool result = attribute.IsValid("()[]\\;:,<>@example.com");
// Assert
Assert.AreEqual(false, result);
}
[TestMethod]
public void CustomDataAnnotations_Email_ReturnTrueIfValid()
{
// Arrange
EmailAttribute attribute = new EmailAttribute();
// Act
bool result = attribute.IsValid("[email protected]");
// Assert
Assert.AreEqual(true, result);
}
}
}
Und hier wird der nachfolgende Code für den Test geschrieben:
using System;
using System.ComponentModel.DataAnnotations;
using System.Net.Mail;
public class EmailAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
//Let RequiredAttribute validate whether the value is required or not.
if (value == null)
{
return true;
}
//Check to see if System.Net.Mail can send to the address.
try
{
var i = new MailAddress(value.ToString());
}
catch (Exception)
{
return false;
}
return true;
}
}
Alle Tests zunächst nicht und es gelang ihm dann nach den Code zu schreiben, aber sind die Tests angemessen geschrieben? Zu viel oder zu wenig? Ich weiß, dass dies ein sehr einfaches Beispiel ist, aber ich möchte sicherstellen, dass ich auf dem richtigen Weg bin, bevor ich zu komplizierteren Dingen übergehe.
Vielleicht total offtopic, aber ich werde es trotzdem sagen: Dump die VS-integrierte Test-Zeug und NUnit stattdessen. Wie MSBuild vs NAnt bietet VSTS nicht die Bandbreite an Funktionalität und Flexibilität, die Sie in NUnit finden. Abgesehen davon denke ich, dass Sie das richtig nähern. – kprobst
Es ist in der Tat total offtopic :) Ich denke, es ist eine Frage der persönlichen Vorliebe. Ich benutze die Visual Studio Test-Tools, und sie funktionieren sehr gut für mich, alle in VS integriert. – Cocowalla
@Coco: Sie integrieren sich auch gut in TFS. –