Я хочу добавить текстовый водяной знак в слово.
Я использую Microsoft.Office.Interop.Word 15.
Тот же код работает для 32-разрядной версии Office 2016, но для 64-разрядной версии Office 365 будет
генерировать исключение «Элемент не найден» 0x8002802B, когда я вызываю «.AddTextEffect».
Как я могу исправить эту проблему?
wordDoc = wordApp.Documents.Open(file.FullName)
wordApp.Visible = True
‘Create watermark
With wordDoc
.Activate()
.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekCurrentPageHeader
.ActiveWindow.ActivePane.Selection.HeaderFooter.Shapes.AddTextEffect(
Microsoft.Office.Core.MsoPresetTextEffect.msoTextEffect1,
watermark, font, 1,
Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoFalse, 0, 0)
End With
Задаваемые 12 лет, 7 месяцев
В настоящее время я создаю сценарий сборки CI для устаревшего приложения. Доступны спорадические тесты JUnit, и я буду интегрировать выполнение всех тестов JUnit в сборку CI. Однако мне интересно, что делать со 100-ю ошибками, с которыми я сталкиваюсь в не поддерживаемых тестах JUnit. Я:
1) Прокомментируйте их, поскольку они кажутся имеющими разумную, если не поддерживается, бизнес-логику в них в надежде, что кто-то в конечном итоге их раскомментирует и исправит
2) Удалите их, так как маловероятно, что кто-то их исправит, и закомментированный код будет только проигнорирован или навсегда захламлен.
3) Выследите тех, кто оставил этот беспорядок в моих руках, и поразите их по головам распечатками кода (который из-за запаха длительного метода будет достаточно подходящим для этой задачи), одновременно проповедуя преимущества ухоженного и модульно протестированная кодовая база
Показать невидимок. Могу поспорить, что в одной из этих строк скрывается недопустимый символ (предпочтительно null), который не отображается на вашем экране. Или, может быть, файл имеет неправильный тип конца строки.
Мои обычные трюки здесь:
2) Закомментируйте все строки, а затем раскомментируйте их по одной, пока снова не появится синтаксическая ошибка. Если синтаксическая ошибка возникает, когда вы закомментируете все остальные строки, то реальная проблема связана с восходящим потоком.
3) Удалите указанную строку и пару строк ниже и выше нее. Удалите эти строки за одну операцию; вы не хотите, чтобы плохой персонаж оставался, потому что он был между двумя строками, которые вы удаляли по одной за раз. Затем перепечатайте эти строки. Не вставляйте их обратно; это может просто вставить проблему обратно.
При открытии любого проекта Java или проекта maven, нового или старого, Java выдает «Ошибка: не удалось найти или загрузить приложение основного класса» во время выполнения. Java будет работать, только если “package foo;” закомментирован, т.е. “//package foo;”.
Я использую расширение для запуска кода, которое работает с любым другим языком. Он работает, как и ожидалось, в java, если оператор пакета исключен или закомментирован.
Это можно воспроизвести в каждой новой Java-программе, созданной или открытой в VS Code, даже в проектах, созданных в IntelliJ (которые работают, как и ожидалось) и открытых в VS Code.
Операционная система: Mac OSX Mojave 10.14.4
Версия JDK: 1.8.0_202
Версия кода Visual Studio: 1.33.0
Версия расширения Java: 0.6.0
Я никогда не мог заставить свой java-код работать внутри VS Code, пока не удалил оператор пакета (закомментировал его). После удаления оператора пакета мой код работает, как и ожидалось, но имеет «проблему» внутри кода VS, говорящую: «Объявленный пакет» не соответствует ожидаемому пакету «приложение» Java (536871240)».
Ладно, спасибо за помощь в этом, Мвилсон. После небольшого эксперимента сценарий стал намного яснее.
Этот код работает и отображается правильно:
Несмотря на то, что оскорбительная строка закомментирована, она все равно не будет отображаться. Это нормально (хотя и очень странно, но вы дали мне объяснение, и я посмотрю на предоставленные вами ссылки, так что спасибо за них).
Копнем немного глубже, если закомментированная строка изменится на:
тогда он все равно не будет отображаться (значит, он должен обнаруживать здесь jinja? Возможно, из-за скобок с двойной цепочкой?)
Если закомментированная строка изменена на:
то есть только одна цепочка скобок, файл HTML отображается без проблем и делает все, что я от него ожидаю (с точки зрения возможности использовать переменные и т. д.).
И другая мораль этой истории заключается в том, что я должен уделять больше внимания тому, что я определил в части Python render_template()!
Еще раз спасибо за вашу помощь, и я проверю эти ссылки. Я пришел из мира Cobol и Delphi (сервер/клиент), так что все это для меня немного ново!
8 ответы
ответ дан 23 мар ’10, в 16:03
Если вы используете JUnit 3, вы можете просто переименовать тесты, чтобы они не начинались с test.
Кроме того, попробуйте исправить тесты для функциональности, которую вы изменяете, чтобы не увеличивать беспорядок в коде.
Неудачные тесты JUnit показывают, что либо
- Тестируемый исходный код был проработан без поддержки тестов. В этом случае обязательно стоит рассмотреть вариант 3, или
- У вас настоящая неудача.
где isBeforeTimeBomb() можно просто сравнить текущую дату с датой в будущем по вашему выбору. Затем вы следуете советам, данным здесь другими, и уведомляете свою команду разработчиков о том, что сборка сейчас зеленая, но, вероятно, взорвется через X дней, если не будут исправлены тесты с временной бомбой.
Создан 17 сен.
Следуйте нет разбитого окна принцип и предпринять некоторые действия к решению проблемы. Если вы не можете исправить тесты, по крайней мере:
- Игнорируйте их в модульных тестах (есть разные способы сделать это).
- Введите столько проблем, сколько необходимо, и назначьте людей для исправления тестов.
Затем к предотвращать чтобы такая ситуация не повторилась в будущем, установите заглушку аналогично Плагин Hudson Game. Людям присваиваются баллы во время непрерывной интеграции, например
- -10 ломать билд <- хуже
- -1 прервать тест
- и так далее
Действительно крутой инструмент для создания ощущения ответственность о модульных тестах внутри команды.
Если они компилируются, но терпят неудачу: оставьте их. Это даст вам хорошую историю улучшений тестирования с течением времени при использовании CI. Если тесты не компилируются, а ломают сборку, закомментируйте их и просите разработчиков исправить.
Это, очевидно, не исключает использования варианта 3 (удары по голове), вы все равно должны это делать, независимо от того, что вы делаете с тестами.
Вы обязательно должны пока отключить их каким-то образом. Будет ли это сделано путем комментирования, удаления (при условии, что вы можете получить их обратно из системы управления версиями) или другими способами, зависит от вас. Вы не хотите, чтобы эти неудачные тесты были препятствием для людей, пытающихся представить новые изменения.
Если их достаточно, чтобы вы могли исправить их самостоятельно, отлично – сделайте это. Если их слишком много, то я буду склонен использовать подход «краудсорсинга». Сообщайте об ошибке для каждого неудавшегося теста. Попытайтесь назначить эти ошибки фактическим владельцам / авторам тестов / протестированного кода, если это возможно, но если это слишком сложно определить, тогда случайный выбор прекрасен, если вы говорите людям переназначить ошибки, которые были им неправильно назначены. Затем побудите людей исправить эти ошибки, либо назначив им крайний срок, либо периодически уведомляя всех о прогрессе и поощряя их исправлять все ошибки.
Система CI, которая постоянно горит красным, бесполезна. Основное преимущество – поддерживать планку качества, а это становится намного труднее, если нет перехода, чтобы отметить падение качества.
Таким образом, немедленные усилия должны заключаться в том, чтобы отключить неудачные тесты и создать заявку на отслеживание / рабочий элемент для каждого из них. Каждый из них решается, как бы вы ни выполняли сортировку – если тест никого не интересует, избавьтесь от него. Если сбой представляет собой проблему, которую необходимо решить до отправки, оставьте тест отключенным.
Находясь в этом состоянии, вы можете положиться на систему CI, которая сообщит вам, что требуются срочные действия – откатить последнее изменение или немедленно назначить команду для исправления проблемы, или что-то еще.
Я не знаю вашего положения в компании, но, если это возможно, оставьте их и отметьте проблемы как ошибки в вашей системе заявок. Предоставьте разработчикам возможность исправить их или удалить тесты.
Если это не сработает, удалите их (у вас есть контроль версий, верно?) И закройте заявку с комментарием вроде «удалены неудачные тесты junit, которые, по-видимому, не будут исправлены» или что-то более вежливое.
Дело в том, что тесты junit – это код приложения, и поэтому они должны работать. Это то, за что платят разработчикам. Если тест больше не подходит (то, чего больше не существует, было протестировано), разработчики должны сообщить об этом и удалить тест.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
java
junit
continuous-integration
legacy
or задайте свой вопрос.