Как Вы расширяли Ваш Утверждать [закрытый] класс

JVM не отслеживает такую ​​информацию (кроме случаев, когда производится сборка мусора), поэтому нет другого способа, кроме как сохранить обратную ссылку в классе «member».

И если вам нужна эта информация, я не вижу проблем с сохранением такой ссылки.

12
задан R. Martinho Fernandes 17 July 2009 в 15:44
поделиться

4 ответа

Я только что добавил реализацию к ImageAssert, как я записал выше (в моем вопросе), я буду рад услышать больше таких образцов

[TestMethod]
public void CompareImagesSize()
{
 Image expected = Bitmap.FromFile(@"C:\ShaniData\Projects2008\TddSamples\Output\ExpectedImage.png");
 Image actual = Bitmap.FromFile(@"C:\ShaniData\Projects2008\TddSamples\Output\RhinoDiagram.png");

 Bitmap expectedBitmap = new Bitmap(expected);
 Bitmap actualBitmap = new Bitmap(actual);

 ImageAssert.HasTheSameSize(expectedBitmap, actualBitmap);
}

[TestMethod]
public void CompareTwoSameImagesButWithDifferenExtension()
{
 Image expected = Bitmap.FromFile(@"C:\ShaniData\Projects2008\TddSamples\Output\Image2.png");
 Image actual = Bitmap.FromFile(@"C:\ShaniData\Projects2008\TddSamples\Output\Image1.jpg");

 Bitmap expectedBitmap = new Bitmap(expected);
 Bitmap actualBitmap = new Bitmap(actual);

 ImageAssert.AreEqual(expectedBitmap, actualBitmap);
}

public class ImageAssert
{
    //public static void MoreMethods(Bitmap expected, Bitmap actual)
    //{
    //    //Compare image extensions
    //    //Compare Thumbnail...
    //}

    public static void HasTheSameSize(Bitmap expected, Bitmap actual)
    {
        if ((expected.Height != actual.Height)
            || (expected.Width != actual.Width))
            HandleFail("ImageAssert.HasTheSameSize", String.Empty);
    }

    public static void AreEqual(Bitmap expected, Bitmap actual)
    {
        for (int i = 0; i < expected.Width; i++)
        {
            for (int j = 0; j < expected.Height; j++)
            {
                Color expectedBit = expected.GetPixel(i, j);
                Color actualBit = actual.GetPixel(i, j);
                if (!expectedBit.Equals(actualBit))
                {
                    HandleFail("ImageAssert.AreEqual", String.Empty, i, j);
                    return;
                }
            }
        }
    }

    internal static void HandleFail(string assertionName, string message, params object[] parameters)
    {
        throw new AssertFailedException(String.Format(assertionName));
    }
}
0
ответ дан 2 December 2019 в 22:52
поделиться

Я люблю чувство Утверждать класса, но хотел что-то, что будет служить больше в качестве общей платформы проверки. Я запустил со статьи Roger Alsing об использовании дополнительных методов, и теперь имейте систему, которая работает как:

Enforce.That(variable).IsNotNull();
Enforce.That(variable).IsInRange(10, 20);
Enforce.That(variable).IsTypeOf(typeof(System.String));
etc.

Если осуществление перестало работать, оно выдает исключение. Я рассматривал рефакторинг так, чтобы я мог также включить некритическую оценку, которая не выдает исключение. Некоторым нравится Проверка. Это как вариант Осуществляет. Это, которое возвратило бы булевские переменные, но имело бы дополнительные методы с идентичными подписями.

То, что мне нравится приблизительно этот подход, до сих пор, то, что я могу использовать их в своих модульных тестах, а также для проблем предварительной проверки и постпроверки в моем фактическом коде, не ссылаясь на Microsoft. VisualStudio. QualityTools. Блок UnitTestFramework. Я поместил его в свой корневой блок для моей среды разработки приложения и Осуществляю, в корне, таким образом, очень легко добраться до.

4
ответ дан 2 December 2019 в 22:52
поделиться

Много моих тестов вращается вокруг загрузки объекта что (как CuttingPath) с известным хорошим состоянием.. Выполнение теста, затем сравнение результата к загруженному объекту. Если они отличаются затем somehthing, 'оказалось', вызвал изменение в коде.

Этот подход экономит массу времени и допускает пользовательские сравнения при необходимости.

0
ответ дан 2 December 2019 в 22:52
поделиться

Я думаю, что при рефакторинге тестов для сокращения дублирования затем, Вы заканчиваете тем, что создали свою собственную платформу как побочный продукт, и конечно Ваша среда тестирования будет иметь, утверждают помощников, которые имеют смысл в Вашем контексте.

Пример, который я имею в виду, был, когда тестирование xhtml сообщает, что мы закончили с тестами, которые смотрели что-то как:

  assertCoverageEquals(45.5);

где позади утверждают, что покрытие было чем-то как:

  assertPercentage(COVERAGE_ID, 45.5);

и затем позади этого было что-то, что использовало xpath для получения значения и другого метода, который знал то, чем форматирование было для процентов.

0
ответ дан 2 December 2019 в 22:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: