Как являются люди кодом поблочного тестирования, который использует Linq для SQL

Без использования каких-либо дополнительных библиотек:

package test;

import java.io.DataInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) throws Exception{
        List<Class> classes = getClasses(Test.class.getClassLoader(),"test");
        for(Class c:classes){
            System.out.println("Class: "+c);
        }
    }

    public static List<Class> getClasses(ClassLoader cl,String pack) throws Exception{

        String dottedPackage = pack.replaceAll("[/]", ".");
        List<Class> classes = new ArrayList<Class>();
        URL upackage = cl.getResource(pack);

        DataInputStream dis = new DataInputStream((InputStream) upackage.getContent());
        String line = null;
        while ((line = dis.readLine()) != null) {
            if(line.endsWith(".class")) {
               classes.add(Class.forName(dottedPackage+"."+line.substring(0,line.lastIndexOf('.'))));
            }
        }
        return classes;
    }
}
54
задан Kris Erickson 16 September 2008 в 19:32
поделиться

6 ответов

Обновление:

Fredrik поставил решение в качестве примера, как сделать модульный тест linq2sql приложения в его блоге. Можно загрузить его в:

http://web.archive.org/web/20120415022448/http://iridescence.no/post/DataContext-Repository-Pattern-Example-Code.aspx

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

Мое старое сообщение:

*I нашел эти блоги, что я думаю, хорошее начало для того, чтобы сделать обертку DataContext: Link1 Link2

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

14
ответ дан David Dowdle 7 November 2019 в 18:11
поделиться

Оберните DataContext, затем дразните обертку. Это - самый быстрый способ сделать его, tho это требует кодирования для тестирования, которое некоторые люди думают запахи. Но иногда, когда у Вас есть зависимости, которые нельзя (легко) дразнить, это - единственный путь.

4
ответ дан 7 November 2019 в 18:11
поделиться

Linq делает тестирование намного легче. Linq запрашивает работу точно также над Списками как на материале Linq-to-sql. Можно выгрузить Linq к SQL для объектов списка и протестировать тот путь.

2
ответ дан Mendelt 7 November 2019 в 18:11
поделиться

Mattwar в Своенравный блог имел большую статью о том, как копировать расширяемый контекст данных Linq2Sql. Проверьте его - , НАСМЕШКИ ОТКЛОНЯЮТ - AN РАСШИРЯЕМЫЙ LINQ К SQL DATACONTEXT

2
ответ дан Danimal 7 November 2019 в 18:11
поделиться

Обычно, Вы не должны тестировать часть кода, который использует LINQ для SQL, но если Вы действительно хотите, можно использовать те же наборы данных, которые Вы запрашиваете против сервера и превращаете их в объекты в оперативной памяти и выполняете запросы LINQ против того (который использовал бы Счетные методы вместо Queryable).

Другая опция состоит в том, чтобы использовать Matt Warren mockable версия DataContext.

можно также получить SQL-операторы, которые LINQ к SQL использует путем получения их через отладчик (от объекта IQueryable), проверьте тех вручную, и затем включайте их в автоматизированные тесты.

1
ответ дан Mark Cidade 7 November 2019 в 18:11
поделиться

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

Это делает действительно хорошим протестировать уровень ORM путем создания DB через DataContext и наличия его пустой для начала.

я покрываю его на своем блоге здесь: http://web.archive.org/web/20090526231317/http://www.aaron-powell.com/blog/may-2008/unit-testing-linq-to-sql.aspx

1
ответ дан David Dowdle 7 November 2019 в 18:11
поделиться
Другие вопросы по тегам:

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