Lösung: Testgetrieben entwickeln
Completion requirements
- using System;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- namespace testDemoTDD
- {
- [TestClass]
- public class testBruch
- {
- Bruch b;
- [TestInitialize()]
- public void Initialize()
- {
- b = new Bruch(2, 4);
- }
- [TestMethod]
- public void testQuotient1()
- {
- Assert.AreEqual(0.5, b.quotient());
- }
- [TestMethod]
- [ExpectedException(typeof(DivideByZeroException))]
- public void testQuotient2()
- {
- Bruch b1 = new Bruch(1, 0);
- b1.quotient();
- }
- [TestMethod]
- public void testKuerzen() // Testmethode mit 3 Testfaellen
- {
- b.kuerzen();
- Assert.AreEqual(1, b.Zaehler);
- Assert.AreEqual(2, b.Nenner);
- Bruch b1 = new Bruch(18, 9);
- b1.kuerzen();
- Assert.AreEqual(2, b1.Zaehler);
- Assert.AreEqual(1, b1.Nenner);
- Bruch b2 = new Bruch(3, -9);
- b2.kuerzen();
- Assert.AreEqual(1, b2.Zaehler);
- Assert.AreEqual(-3, b2.Nenner);
- }
- }
- }
Listing 1: testBruch.cs mit den Unittests
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace testDemoTDD
- {
- public class Bruch
- {
- public double Zaehler { get; set; }
- public double Nenner { get; set; }
- public Bruch(double z, double n)
- {
- Zaehler = z;
- Nenner = n;
- }
- public double quotient()
- {
- if (Nenner == 0)
- throw new DivideByZeroException();
- return Zaehler / Nenner;
- }
- public void kuerzen()
- {
- // http://www.linux-related.de/index.html?/coding/alg_euklid.htm
- double u = Math.Abs(Zaehler), v = Math.Abs(Nenner), tmp;
- while (u > 0)
- {
- tmp = u;
- u = v % u;
- v = tmp;
- }
- Zaehler /= v;
- Nenner /= v;
- }
- }
- }
Last modified: Thursday, 23 August 2018, 8:24 PM