powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как создать юнит-тест чтобы без его прохождения проект не собирался.
13 сообщений из 63, страница 3 из 3
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38823617
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisв общем, удалось сделать чтобы через VS запускался проект с автотестами в TeamCity и если они не пройдены то коммит в svn не происходит. Но не тут то было успокаиваться. Руководство хочет чтобы автотесты запускало именно событие коммит в svn и если тесты не проходят то коммит отменяется. В принципе, такое можно реализовать создав в svn хук который перехватит событие коммита и запустит автотесты в TeamCity из коммандной строки. Только запустить то он запустит, но коммит после прогона автотестов при таком способе запуска TeamCity вроде не сделает? Кто что знает?Ну явно надо скрипт писать, что запустит тесты, посмотрит на результат их выполнения и если всё ок, то сделает коммит.
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38823654
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, не похоже что в svn hook можно отменить коммит.
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38823914
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisskyANA, не похоже что в svn hook можно отменить коммит.Зачем отменять коммит?
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38823998
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, хотим чтобы коммит отменялся если автотесты не прошли. В общем, сделать можно. Надо в svn в каком-нибудь hook, например Start commit hook написать скрипт, который проверит результаты тестов и при отрицательном результате сделать exit 1. Тогда коммит не будет зафиксирован. Соответственно, если автотесты ок то возвращаем exit 0, тогда коммит завершается успешно. Таким образом, можно засатвить любой автотест писать результат в какой-нибудь файл, из которого скритп hook'а будет считывать его. У меня так:

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
@echo off

set file=c:\Autotest.result

java -jar c:\tcc.jar //вызов TeamCity, параметры опущены

if not exist %file% (goto ROLLBACK)

for /f "eol=# delims== tokens=1,2" %%i in (%file%) do (

if %%j==0 (goto COMMIT) else (goto ROLLBACK)

)

:COMMIT
exit 0

:ROLLBACK
exit 1



Autotest.result содержит в себе пару result=значение. Проверяем, если не 0 то exit 1. Сделано в цикле так как предполагается в будущем наличие множества пар.
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38824314
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YK13может это подойдет? А на вскидку, через командную строку запустить там проект с автотестами можно? Из bat-файла.
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38824472
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisskyANA, хотим чтобы коммит отменялся если автотесты не прошли.

Помилуйте, бояре. Коммит- синхронная операция. Svn и так, прямо скажем, не самая быстрая штука (особенно если с https скрещена). А тут он будет ждать, пока тесты пойдут. А если их много и они 5 минут выполняются?

Проблема игнорирования тестов перед коммитом в trunk - административная. И решать её надо соответственно - каждому виновному штраф- от "угостить всех пивом после работы", до "минус 10% месячной премии за каждый случай". А для контроля- автосборка по коммиту и при падении тестов- письмо всей команде (чтобы знали героев).
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38824487
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey TominrigorMortisskyANA, хотим чтобы коммит отменялся если автотесты не прошли.

Помилуйте, бояре. Коммит- синхронная операция. Svn и так, прямо скажем, не самая быстрая штука (особенно если с https скрещена). А тут он будет ждать, пока тесты пойдут. А если их много и они 5 минут выполняются?

Проблема игнорирования тестов перед коммитом в trunk - административная. И решать её надо соответственно - каждому виновному штраф- от "угостить всех пивом после работы", до "минус 10% месячной премии за каждый случай". А для контроля- автосборка по коммиту и при падении тестов- письмо всей команде (чтобы знали героев).
Ну вот за офтоп с вас "угостить всех пивом после работы".
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38824626
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisНу вот за офтоп с вас "угостить всех пивом после работы".

Недавно мы потеряли недели 3 работы разработчика, кучу его нервов и время на выполнение задачи из-за того, что пытались решить программными средствами административную проблему.
Наконец убедили PM'а, что не надо так делать- и вот оно, всё хорошо. 3 недели- фиг с ними, ему списывать, а вот нервы...
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38824994
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin, если убедишь моего руководителя, тогда с меня пиво. Я не сам себе мозги выкручиваю.
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38825079
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, я сам справился.
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38825167
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisНу, я сам справился.
Так это через что сделали? хук на коммит?
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38826732
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buserrigorMortisНу, я сам справился.
Так это через что сделали? хук на коммит?

Справился в смысле убеждения начальства, оно согласилось на гибрид первого и второй варианов - коммитим, запускается проект с автотестами на TeamCity, если не проходят то релиз не собираем. Так же оставляем возможность вызывать проект TeamCity из VisualStudio - если автотесты не проходят то не коммитим и рассылаем уведомление о том что fail. Это легко сделать одними средствами TeamCity (TeamCity remote run плагин на VisualStudio).
Вариант с хуком который вызывал бы проект на TeamCity не прокатывает. Если хук вызвал бы TeamCity то последний должен был бы собрать билд с последними изменениями в проекте и прогнать на нём автотесты. Но проект с изменениями существует на машине разработчика который осуществляет коммит. Тогда TeamCity должен загрузить себе это проект, собрать его прогнать автотесты и принять решение о коммите, а это есть второй вариант описанный выше и при таком варианте хук смысла не имеет.
Если даже делать это через хук то скрипт должен содержать сопоставление пользователя-коммитера и его машины, запускать TeamCity remote run на машине этого пользователя-коммитера. Но мне что-то не нравится. Так в скрипте придётся всех разработчиков прописывать-выписывать и ещё при разных проектах как-то вычислять что для них запускать (это может быть не обязательно TeamCity и VisualStudion по условию задачи).
Тем не менее, спасибо всем за помощь. Опыт был получен.
...
Рейтинг: 0 / 0
Как создать юнит-тест чтобы без его прохождения проект не собирался.
    #38828008
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisСправился в смысле убеждения начальства

Ну что ж, поздравляю!
Проблема решена с правильной стороны :)
...
Рейтинг: 0 / 0
13 сообщений из 63, страница 3 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как создать юнит-тест чтобы без его прохождения проект не собирался.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]