Автоматически пример кода модульного теста

Я нахожу решение, используя ViewHolder :

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        holder = new ViewHolder();
        convertView = LayoutInflater.from(mContext).inflate(R.layout.listview_item, null);
        holder.layoutOperative = convertView.findViewById(R.id.layout_list_item);
        holder.txtOne = convertView.findViewById(R.id.text_one);
        holder.txtTwo = convertView.findViewById(R.id.text_two);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    if (mBuildingsList.get(position).isOperative()) {
        holder.layoutOperative.setBackgroundResource(R.drawable.list_item_background_active);
    } else {
        holder.layoutOperative.setBackgroundResource(R.drawable.list_item_background_inactive);
    }

    holder.txtOne.setText(mList.get(position).getPropertyOne());
    holder.txtTwo.setText(mList.get(position).getPropertyTwo());

    return convertView;

}

Спасибо всем!

11
задан Chris Aitchison 19 November 2008 в 09:21
поделиться

4 ответа

Да, замок из песка поддерживает это, и замечательно поддержать правильность примеров. Можно указать на регион кода как это:

   /// <summary>
   /// Gizmo which can act as client or server.
   /// </summary>
   /// <example>
   /// The following example shows how to use the gizmo as a client:
   /// <code lang="cs"
   ///    source="..\gizmo.unittests\TestGizmo.cs"
   ///    region="GizmoClientSample"/>
   /// </example>
   public class Gizmo

Можно затем использовать некоторый тестовый код в TestGizmo.cs как пример путем включения его в регион:

[Test]
public GizmoCanActAsClient()
{
   #region GizmoClientSample
   Gizmo gizmo = new Gizmo();
   gizmo.ActAsClient();
   #endregion
}

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

8
ответ дан 3 December 2019 в 07:14
поделиться

Я не сделал этого сам, но я видел упомянутый в Прагматических книгах Программистов. Если я не ошибаюсь, книга "Прагматическое Поблочное тестирование в C# с Nunit" упоминает, что они сделали это для книги. Могло случиться так, что они упомянули в одном из их подкастов все же.

Они упомянули, что у них был непрерывный сервер сборки, настроенный для их книг. Если я не ошибаюсь, они использовали латекс или некоторую другую основанную на тексте разметку для записи их книг в, и у них были шаги сборки для форматирования разметки и кода создания и поблочного тестирования в книге.

0
ответ дан 3 December 2019 в 07:14
поделиться

Простое решение: Подайте небольшую заявку, в которой Вы включаете все заголовки примера кода и затем называете их соответствующие точки входа

#include "samples/sampleA.h"

void main()
{
  SomeFunction();
}

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

Лучшее Решение: Зарегистрируйте вывод и сделайте, чтобы кто-то посмотрел на него утром.

Еще Лучшее Решение: Зарегистрируйте вывод и grep это или что-то так, что никто не должен смотреть на него если его поврежденный.

Лучшее решение: Найдите подходящую среду тестирования, надо надеяться, что-то со всеми дополнительными свойствами, которые можно получить так, она может послать людям по электронной почте если его поврежденный или что-то как этот. В нашем случае мы избегаем дополнительных свойств вместо этого, мы соединились, USB управляют на основе политик Сиреной, которая уходит, когда что-то повреждается, Это довольно захватывающе!

0
ответ дан 3 December 2019 в 07:14
поделиться

Я предложил бы использовать специальный бит разметки в Вашем XML, который говорит, "Захватите пример кода от этого места". Это относилось бы к нормальному файлу C#, который может быть выполнен с модульными тестами. Для взятия примера Вы могли бы иметь:

/// <summary>Summary here</summary>
/// <example>Here is an example
/// <code>!!sourcefile:SomeClassTest.cs#SomeFunction!!</code></example>
public void SomeFunction()

Ваши модульные тесты, выполненные как нормальные, и затем, вставляют шаг сборки между, "создают XML", и "выполняют Замок из песка", Вы заменили бы каждый "маркер файла" соответствующим содержанием. Могут даже быть рычаги, которые Вы могли поместить в Замок из песка, чтобы сделать это во время поколения документа - я не знаю достаточно о Замке из песка для знания наверняка.

Это ужасно для изобретения собственной разметки, конечно, но это должно работать.

Конечно, это предполагает, что примеры кода являются легко тестируемой единицей - некоторые не могут быть (если они имеют дело с ресурсами и т.д.). По крайней мере, Вы знали бы, что это компилирует хотя :)

9
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

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