Протестировать Первое средство разработки на SQL Server 2005?

У меня была ситуация, когда я использовал настраиваемый десериализатор, но я хотел, чтобы стандартный десериализатор выполнял большую часть работы, а затем, используя SAME json, выполнял некоторые дополнительные настраиваемые действия. Однако после того, как десериализатор по умолчанию выполнил свою работу, текущее местоположение объекта JsonParser вышло за рамки необходимого мне текста json. Поэтому у меня возникла та же проблема, что и у вас: как получить доступ к базовой строке json.

Вы можете использовать JsonParser.getCurrentLocation.getSourceRef(), чтобы получить доступ к исходному источнику json. Используйте JsonParser.getCurrentLocation().getCharOffset(), чтобы найти текущее местоположение в источнике json.

Вот решение, которое я использовал:

public class WalkStepDeserializer extends StdDeserializer implements
    ResolvableDeserializer {

    // constructor, logger, and ResolvableDeserializer methods not shown

    @Override
    public MyObj deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException,
            JsonProcessingException {
        MyObj myObj = null;

        JsonLocation startLocation = jp.getCurrentLocation();
        long charOffsetStart = startLocation.getCharOffset();

        try {
            myObj = (MyObj) defaultDeserializer.deserialize(jp, ctxt);
        } catch (UnrecognizedPropertyException e) {
            logger.info(e.getMessage());
        }

        JsonLocation endLocation = jp.getCurrentLocation();
        long charOffsetEnd = endLocation.getCharOffset();
        String jsonSubString = endLocation.getSourceRef().toString().substring((int)charOffsetStart - 1, (int)charOffsetEnd);
        logger.info(strWalkStep);

        // Special logic - use JsonLocation.getSourceRef() to get and use the entire Json
        // string for further processing

        return myObj;
    }
}

И информация об использовании десериализатора по умолчанию в пользовательском десериализаторе находится в . Как мне вызвать десериализатор по умолчанию из пользовательского десериализатора в Джексоне

6
задан Ray Vega 16 June 2011 в 16:00
поделиться

4 ответа

Team System, вероятно, наиболее известное решение, но вы также можете попробовать TSQLUnit (SourceForge).

Я сам не использовал его, но эта статья достойно представляет его.

2
ответ дан 17 December 2019 в 04:51
поделиться

Касса http://www.sqlservercentral.com/articles/Testing/66553/ и http://www.sqlservercentral.com/articles/Database+Design/66845/

Это довольно грубая статья о том, как делать все в рамках T-SQL.

Вы думали об использовании NHibernate и использовании TestDriven или аналогичный только для тестов?

1
ответ дан 17 December 2019 в 04:51
поделиться

В проектах, где у меня не было доступа к командной системе для db pro, я использовал сценарии sql в сочетании с msbuild и библиотекой задач sdc для msbuild ( http: // www .codeplex.com / sdctasks ). Скрипт msbuild вызывает задачу sdc для запуска моих скриптов sql в определенном порядке (например, создание базы данных, создание таблиц и т. Д.) И в определенной строке подключения. Скрипты всегда проверяют, существует ли объект, и сначала выполняют его разборку, а затем создают резервную копию.

Скрипты sql и msbuild я помещаю в обычный проект базы данных Visual Studio (который не делает ничего особенного, поэтому вы можете использовать простой пустой project), поэтому все контролируется исходным кодом.

с таким набором сценариев вы можете настроить новую базу данных для каждого запуска теста.

1
ответ дан 17 December 2019 в 04:51
поделиться

Мне удалось адекватно применить стиль разработки, управляемый тестированием, к базам данных SQL Server. с использованием TSQLUnit . Я последовал той же схеме, что и вы, при написании сначала отказавшего sproc модульного теста, а затем внесения изменений, необходимых для прохождения теста. Со временем я также создал набор тестов, когда их выполнение проверяло, что ничего не сломалось, при внесении каких-либо новых изменений.

Были некоторые трудные моменты (включая крайние трудности при написании тестов для существующих sprocs), но это работало особенно при изменении схемы. Однако я бы порекомендовал посмотреть T.S.T. T-SQL Test Too1 , который, в отличие от TSQLUnit (, мне пришлось использовать собственный ), имеет встроенную поддержку утверждений.

1
ответ дан 17 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

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