Как я говорю, использует ли win32 приложение время выполнения.NET

Как я сказал в комментариях.

Я думаю, вы путаете соединение с открытой базой данных с подготовленным заявлением. Для подготовленного оператора PDO возвращает объект PDOStatment, для которого необходимо вызвать execute. На самом деле PDO даже не имеет метода execute.

http://php.net/manual/en/class.pdo.php

Кроме того, не существует такой вещи, как открытое или закрытое подготовленное утверждение.

В вашем примере кода:

public function testExpectedSQLResults(string $sql)
{
    $this->getPdo()->prepare($sql);
}

Это, по существу, спорный (если вы не просто делаете это бросить исключение, которое до сих пор в основном спорно смотри ниже), как вы никогда не можете выполнить это запрос, потому что вы не возвращаете объект PDOStatment, который на самом деле имеет метод execute.

В случае соединения с БД, как правило, вам не нужно беспокоиться об этом либо

Для тестирования PDO::prepare действительно возвращает логическое значение false или выдает исключение в зависимости от того, как его настроить. Параметризованные данные не существуют (как правило) в исходном коде. Это зависит от состояния приложения при его запуске. Входные данные, если вы будете. Без этого невозможно реально проверить это.

В основном то, что вы делаете выше, это просто проверка синтаксиса вашего SQL, который обычно будет хорошим или плохим и не будет сильно меняться в зависимости от пользовательского ввода. Даже динамические запросы будут либо работать, либо нет, потому что ваш SQL будет синтаксически правильным или нет. Если это не так, вам придется изменить код, который его генерирует, что-то, что вы обнаружите при разработке.

Модульное тестирование - это другое дело, если вы используете что-то вроде PHPUnit . Где вы можете использовать фиксаторы и макеты для входных данных и т. Д. Это больше для тестирования вашего кода в соответствии с известными вариантами использования, так что если вы сделаете здесь изменение кода, вы внезапно не столкнетесь с ошибкой там. И так далее. Это то, что вы можете посмотреть на это. Вы не упомянули об этом в вопросе, поэтому я предположил, что вы этим не пользуетесь.

В PHPUnit вы можете проверить, генерирует ли этот метод тестирования конкретное исключение, например, подобное этому, используя аннотацию:

/**
 * @expectedException \PDOException
 */

https://phpunit.readthedocs.io/en/8.0/ index.html

Надеюсь, это поможет.

6
задан Jaap Geurts 15 April 2009 в 11:26
поделиться

8 ответов

PEVerify сделает это:)

12
ответ дан 8 December 2019 в 02:16
поделиться

Или проще: используйте Process Explorer. Бесплатно скачать здесь

6
ответ дан 8 December 2019 в 02:16
поделиться

Приложение является исполняемым .NET, если для его запуска требуется mscoree.dll. Вы можете проверить это с помощью Dependency Walker , но в целом подойдет любой инструмент, который дает вам список необходимых DLL для запуска.

Если вы хотите узнать, является ли запущенный процесс процессом .NET, я могу рекомендовать только Process Explorer . Этот инструмент предоставит вам много информации о процессе, включая некоторые свойства .NET.

11
ответ дан 8 December 2019 в 02:16
поделиться

Перетащите его в отражатель , и он будет декомпилирован.

2
ответ дан 8 December 2019 в 02:16
поделиться

Process Explorer окрашивает приложения dotNet в желтый цвет по умолчанию. Этого должно быть достаточно :)

6
ответ дан 8 December 2019 в 02:16
поделиться

Еще проще:

  1. Откройте свойства, посмотрите на вкладку «Версия», если в разделе «Другая информация» вы видите свойство под названием «версия сборки», тогда это скорее всего приложение .NET.

  2. Откройте EXE или DLL с помощью блокнота или аналогичного приложения и найдите текст «mscorlib» (без кавычек). Если вы найдете его, скорее всего, это будет приложение .NET.

2
ответ дан 8 December 2019 в 02:16
поделиться

Вы можете использовать ILDasm.exe, который устанавливается по умолчанию вместе с установкой .Net Framework SDK на вашем компьютере (см. C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin). Просто откройте ildasm .exe и перетащите в него сборку, если он распался, это .net, если вы получите сообщение об ошибке, это не так.

2
ответ дан 8 December 2019 в 02:16
поделиться

«Я предпочитаю не устанавливать Visual Studio. Но если я должен буду. Программа командной строки предпочитается. "

Вам не нужно устанавливать Visual Studio только для запуска приложения .NET - только .NET Framework, который вы можете загрузить самостоятельно.

Но, если вы хотите определить, является ли это. NET приложение, вы можете скачать и использовать .NET Reflector или использовать ILDasm, который поставляется с .NET Framework SDK.

1
ответ дан 8 December 2019 в 02:16
поделиться
Другие вопросы по тегам:

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