2012-05-22 4 views
2

У меня есть файл класса с модульного тестирования блока в нем, как такrdmd не работает блок тестирует

class SomeClass { 
    // class stuff... 
    unittest { 
    // unit test stuff... 
    } 
} 

и когда я бегу rdmd --main -unittest someclass.d ничего не происходит. Просто для хорошей меры я убедился, что в блоке тестирования блока есть некоторые неудачные утверждения, но снова ничего не происходит. Что мне не хватает?

Я бегу все это на Ubuntu с rdmd построить 20120401.

Вот выход rdmd--chatty с:

rdmd -unittest --main --chatty linkedlist.d 
'dmd' '-unittest' '-v' '-o-' 'linkedlist.d' '-I.' 
'/tmp/.rdmd-1000/home/david/D_Finger_Exercises/linkedlist.d.6374859E23D5272488D4E396AEDC7BE1' 

Вот ссылка на файлы, я использую: https://github.com/davidk01/D-Finger-Exercises/

+0

сложно помочь вам без дополнительной информации ... вы код должен работать, по крайней мере, похож на пример: http://dlang.org/unittest.html –

+0

вам нужно использовать флаг --main, потому что ваш код не имеет основного метода. – Aalkhodiry

ответ

3

Я не могу воспроизвести вашу ошибку. Вот мой тестовый код:

class SomeClass { 
    // class stuff... 
    unittest { 
    import std.stdio; 
    writeln("unittested"); 
    } 
} 

С кодом выше сохраненного в файле под названием test.d, я побежал:

rdmd -unittest --main test.d

и получил "unittested" печатается на стандартный вывод.

Возможно, вы захотите добавить --chatty к флагам, чтобы вы точно знали, как вызывается dmd.

+0

Я запустил ваш шаблон с -chatty, и ничего не произошло. Вот вывод rdmd с --chatty 'VirtualBox: ~/D_Finger_Exercises $ rdmd -unittest --main --chatty linkedlist.d 'dmd' '-unittest' '-v' '-o-' 'linkedlist.d' '-Я.' '/ tmp/.rdmd-1000/home/david/D_Finger_Exercises/linkedlist.d.6374859E23D5272488D4E396AEDC7BE1'' – davidk01

+0

Ваша паста показывает как ваше приглашение, так и то, что вы набрали, и, по-видимому, вывод. Пожалуйста, (а) уточните, что к чему, (б) проверьте свою установку, (c) удалите /tmp/.rdmd/, (d) post linkedlist.d.Я был бы рад, если бы вам удалось, но по существу вам нужен полный и воспроизводимый пример. –

+0

Извините. a) Результат следующий после 'linkedlist.d'. б) Что именно я должен проверить по поводу моей установки? Все остальное работает нормально. В качестве обходного решения я делал модульные тесты в свой собственный файл с основным методом и, похоже, работает нормально. c) Я удалил '/ tmp/rdmd', но ничего не сделал. d) Я добавил ссылку на 'linkedlist.d' на мой вопрос. – davidk01

1

Ваш файл не имеет функции main, поэтому ничего не будет выполнено. Добавьте функцию main, и ваши модульные тесты будут вызваны, как ожидалось.

+3

не использует параметр --main для ввода точки входа по умолчанию только для целей тестирования? –

+3

'rdmd' с' --main' должен вставить пустую главную функцию. По крайней мере, это то, что говорит документация для 'rdmd'. Вот почему я задаюсь вопросом, что именно мне не хватает. – davidk01

0

Попробуйте переупорядочить аргументы. По какой-то причине, по крайней мере, для меня, rdmd только признает аргументы dmd (-unittest-I и т. Д.), Если они предшествуют аргументам rdmd (--main). Я считаю, что в документах очень короткое упоминание об этом, но я не уверен.

+0

Нет. Я пробовал это в обоих направлениях, а модульные тесты в обоих случаях не выполнялись. – davidk01

+0

Хм, хорошо. Стоит сделать снимок. ;) Надеюсь, вы поняли это. – Tim

+0

Я думаю, что это была ошибка, которая была исправлена ​​давным-давно. –

2

Вы пытались запустить его с флагом -debug?

+0

god dammit наконец –

2

Ваш шаблон шаблона LinkedList. Блок unittest запускается для каждого экземпляра этого шаблона; то есть нулевое время.