запишите затмение junit сменный тест

Вот мой уточненный вариант первого ответа. Я надеюсь, что это полезно.

/// <summary>
/// Converts an <see cref="int"/> to its textual representation
/// </summary>
/// <param name="num">
/// The number to convert to text
/// </param>
/// <returns>
/// A textual representation of the given number
/// </returns>
public static string ToText(this int num)
{
    StringBuilder result;

    if (num < 0)
    {
        return string.Format("Minus {0}", ToText(-num));
    }

    if (num == 0)
    {
        return "Zero";
    }

    if (num <= 19)
    {
        var oneToNineteen = new[]
        {
            "One",
            "Two",
            "Three",
            "Four",
            "Five",
            "Six",
            "Seven",
            "Eight",
            "Nine",
            "Ten",
            "Eleven",
            "Twelve",
            "Thirteen",
            "Fourteen",
            "Fifteen",
            "Sixteen",
            "Seventeen",
            "Eighteen",
            "Nineteen"
        };

        return oneToNineteen[num - 1];
    }

    if (num <= 99)
    {
        result = new StringBuilder();

        var multiplesOfTen = new[]
        {
            "Twenty",
            "Thirty",
            "Forty",
            "Fifty",
            "Sixty",
            "Seventy",
            "Eighty",
            "Ninety"
        };

        result.Append(multiplesOfTen[(num / 10) - 2]);

        if (num % 10 != 0)
        {
            result.Append(" ");
            result.Append(ToText(num % 10));
        }

        return result.ToString();
    }

    if (num == 100)
    {
        return "One Hundred";
    }

    if (num <= 199)
    {
        return string.Format("One Hundred and {0}", ToText(num % 100));
    }

    if (num <= 999)
    {
        result = new StringBuilder((num / 100).ToText());
        result.Append(" Hundred");
        if (num % 100 != 0)
        {
            result.Append(" and ");
            result.Append((num % 100).ToText());
        }

        return result.ToString();
    }

    if (num <= 999999)
    {
        result = new StringBuilder((num / 1000).ToText());
        result.Append(" Thousand");
        if (num % 1000 != 0)
        {
            switch ((num % 1000) < 100)
            {
                case true:
                    result.Append(" and ");
                    break;
                case false:
                    result.Append(", ");
                    break;
            }

            result.Append((num % 1000).ToText());
        }

        return result.ToString();
    }

    if (num <= 999999999)
    {
        result = new StringBuilder((num / 1000000).ToText());
        result.Append(" Million");
        if (num % 1000000 != 0)
        {
            switch ((num % 1000000) < 100)
            {
                case true:
                    result.Append(" and ");
                    break;
                case false:
                    result.Append(", ");
                    break;
            }

            result.Append((num % 1000000).ToText());
        }

        return result.ToString();
    }

    result = new StringBuilder((num / 1000000000).ToText());
    result.Append(" Billion");
    if (num % 1000000000 != 0)
    {
        switch ((num % 1000000000) < 100)
        {
            case true:
                result.Append(" and ");
                break;
            case false:
                result.Append(", ");
                break;
        }

        result.Append((num % 1000000000).ToText());
    }

    return result.ToString();
}
7
задан zeroin23 3 June 2009 в 15:00
поделиться

1 ответ

Если ваш плагин является плагином RCP (Rich Client Platform) с SWT, вы можете использовать SWTBot .
Этот тест может быть инкапсулирован в JUnit one:

Run-as-config-create


Если ваши плагины основаны на OSGi, вы должны знать, что пакет OSGi запускает собственный загрузчик классов, и поэтому классы, похоже, не находятся в одном пакете.
См. « OSGi - враг тестов JUnit? »

Сделайте свой тестовый плагин фрагментом .
Одна из проблем заключается в том, что другие плагины не могут получить доступ к классам, определенным во фрагментах (как указывает Патрик Полин в более подробном обсуждении фрагментов в модульных тестах ).
Другая проблема заключается в том, что игнорируется plugin.xml во фрагменте. И поэтому тестируемый плагин не может внести свой вклад

Из статьи Патрика:

Фрагменты снаружи очень похожи на плагин. Он представлен как отдельный проект в вашем рабочем пространстве, он содержит манифест, описывающий его содержимое, он построен и развернут как jar. Что отличает фрагмент, так это то, что он передает свои ресурсы во время выполнения одному подключаемому модулю хоста. Поэтому классы во фрагменте загружаются загрузчиком классов подключаемого модуля хоста.

plugin unit test

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

Главный недостаток этого подхода на основе фрагментов состоит в том, что трудно агрегировать модульные тесты в основной набор тестов. Хотя легко создать набор тестов, включающий тесты внутри фрагмента, не так просто создать набор, включающий тесты в нескольких фрагментах.


Если вашим подключаемым модулям требуется только простое тестирование, JUnit test Достаточно набора

Создайте новый тестовый набор BookTest в пакете test.yourpackage, щелкните правой кнопкой мыши пакет и выберите « Создать> Тестовый набор JUnit ».

new test case

14
ответ дан 6 December 2019 в 15:29
поделиться
Другие вопросы по тегам:

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