Junit производят и OutOfMemoryError

Что-то, что здесь не упоминается и полезно: добавление суффикса к дню. Я отделил логику суффиксов, чтобы вы могли использовать ее для любого числа, которое вам нравится, а не только даты.

import time

def num_suffix(n):
    '''
    Returns the suffix for any given int
    '''
    suf = ('th','st', 'nd', 'rd')
    n = abs(n) # wise guy
    tens = int(str(n)[-2:])
    units = n % 10
    if tens > 10 and tens < 20:
        return suf[0] # teens with 'th'
    elif units <= 3:
        return suf[units]
    else:
        return suf[0] # 'th'

def day_suffix(t):
    '''
    Returns the suffix of the given struct_time day
    '''
    return num_suffix(t.tm_mday)

# Examples
print num_suffix(123)
print num_suffix(3431)
print num_suffix(1234)
print ''
print day_suffix(time.strptime("1 Dec 00", "%d %b %y"))
print day_suffix(time.strptime("2 Nov 01", "%d %b %y"))
print day_suffix(time.strptime("3 Oct 02", "%d %b %y"))
print day_suffix(time.strptime("4 Sep 03", "%d %b %y"))
print day_suffix(time.strptime("13 Nov 90", "%d %b %y"))
print day_suffix(time.strptime("14 Oct 10", "%d %b %y"))​​​​​​​
5
задан loris_p 19 September 2008 в 16:35
поделиться

6 ответов

Какой вход Вы используете? Есть ли некоторый способ, которым можно переопределить поведение входа значения по умолчанию, чтобы просто проигнорировать все сообщения журнала?

3
ответ дан 15 December 2019 в 01:16
поделиться

Некоторые опции:

  1. Измените свой вход так, чтобы он вывел в файл вместо стандартного вывода.
  2. Увеличьте максимальный размер "кучи" с -Xmx <some number>M, как -Xmx 256M.
1
ответ дан 15 December 2019 в 01:16
поделиться

Я просто увеличил бы доступную память.. Попытайтесь добавить-Xmx256m-Xmx256m к своему VM.

0
ответ дан 15 December 2019 в 01:16
поделиться

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

0
ответ дан 15 December 2019 в 01:16
поделиться

Я вижу, что ответ уже был принят, но здесь - то, что я отправил бы, ввел ли я его и протестировал быстрее:

Если путем "входа" Вас означают System.out.println () или System.err.println (), и если Вы уверены, что Вашему тесту действительно не нужны журналы, то можно перенаправить stdout и stderr программно.

// Save the original stdout and stderr
PrintStream psOut = System.out;
PrintStream psErr = System.err;
PrintStream psDevNull = null;
try
{
    // Send stdout and stderr to /dev/null
    psDevNull = new PrintStream(new ByteArrayOutputStream());
    System.setOut(psDevNull);
    System.setErr(psDevNull);
    // run tests in loop
    for (...)
    {
    }
}
finally
{
    // Restore stdout and stderr
    System.setOut(psOut);
    System.setErr(psErr);
    if (psDevNull != null)
    {
        psDevNull.close();
        psDevNull = null;
    }
}

Таким образом, Ваш тестовый вывод будет отключен, но другой вывод от JUnit не будет, как это было бы при использовании перенаправления на командной строке как это:

ant test &> /dev/null

Перенаправление командной строки заставляет весь вывод Ant/JUnit быть перенаправленным, не, что прибывает из класса, который Вы тестируете, таким образом, это, вероятно, не, что Вы хотите. Программное перенаправление заставляет только печать/записи к System.out и System.err в Вашей программе быть перенаправленной, и Вы все еще получите вывод от Муравья и JUnit.

0
ответ дан 15 December 2019 в 01:16
поделиться

Если это поможет, установка outputtoformatters = "no" решила все мои проблемы с памятью (в Ant 1.7.1 это предотвращает отправку вывода, генерируемого тестами, в тестовые форматеры).

0
ответ дан 15 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

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