no sql unit - devoxx 2012
DESCRIPTION
Unit tests should follow the FIRST rules (Fast, Isolated, Repeatable, Self-Validated and Timely). When persistence layer is under test, fast and isolated rules are the most violated. For relational database management systems, embedded databases and DbUnit framework exist to help us to not break them, but there is no like DBUnit framework for heterogeneous NoSQL systems. NoSQLUnit aids us to not break these rules by providing a JUnit extension which helps us to manage lifecycle of NoSQL systems and also it takes care of maintaining databases into known state. NoSQLUnit can be used during unit tests, but also in high level tests like integration or acceptance tests.TRANSCRIPT
![Page 1: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/1.jpg)
![Page 2: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/2.jpg)
NoSQLUnitTesting NoSQL Applications
Alex Soto BuenoComputer Engineerlordofthejars.com
@alexsotob
![Page 3: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/3.jpg)
Carlo Strozzi
Introduction
![Page 4: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/4.jpg)
Carlo Strozzi
Introduction
2000s
![Page 5: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/5.jpg)
Carlo Strozzi
Introduction
2000s
![Page 6: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/6.jpg)
Carlo Strozzi
Introduction
2000s
No Standard Way
![Page 7: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/7.jpg)
About MeAlex Soto Bueno
Computer EngineerDiagnostic GrifolsTutor at UOCActive Blogger & Speaker
![Page 8: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/8.jpg)
Theory
![Page 9: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/9.jpg)
TheoryFIRST
Tests should Follow FIRST Rules
![Page 10: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/10.jpg)
Theory
FastFIRST
![Page 11: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/11.jpg)
Theory
IsolationFIRST
![Page 12: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/12.jpg)
Theory
RepeatableFIRST
![Page 13: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/13.jpg)
Theory
Self-ValidatingFIRST
![Page 14: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/14.jpg)
Theory
TimelyFIRST
![Page 15: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/15.jpg)
TheoryFIRST
Fast
Isolation
Repeatable
Self-Validating
Timely
Slow
Isolation
Repeatable
Self-Validating
Timely
Unit High
![Page 16: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/16.jpg)
TheoryFIRST
Testing Persistence Layer May Break Isolated Rule
![Page 17: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/17.jpg)
TheoryFIRSTpublic void savePhone(Phone phone) {
...}
@Testpublic void should_insert_phone() {phoneService.save(new Phone());
}
@Testpublic void should_count_phones() {int numberOfPhones = phoneService.count(); assertThat(numberOfPhones, equalTo(??));
}
![Page 18: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/18.jpg)
TheoryFIRST
DBUnit
![Page 19: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/19.jpg)
TheoryFIRST
DBUnit
NoSQLUnit
![Page 20: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/20.jpg)
TheoryNoSQLUnit
Manage Lifecycle
![Page 21: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/21.jpg)
TheoryNoSQLUnit
Manage Lifecycle
Maintain Database State
![Page 22: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/22.jpg)
TheoryNoSQLUnit
Manage Lifecycle
Maintain Database State
Standardize Tests
![Page 23: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/23.jpg)
TheoryNoSQLUnit
Two Groups JUnit Rules
![Page 24: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/24.jpg)
TheoryNoSQLUnit
Two Groups JUnit Rules
Two Annotations
![Page 25: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/25.jpg)
TheoryNoSQLUnit
First Group:Start and Stop NoSQL Engine
![Page 26: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/26.jpg)
TheoryNoSQLUnit
Second Group:Connection to Databases
![Page 27: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/27.jpg)
TheoryNoSQLUnit
@UsingDataSet for Seeding Contents
![Page 28: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/28.jpg)
TheoryNoSQLUnit
@ShouldMatchDataSet for Verifying Contents
![Page 29: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/29.jpg)
TheoryNoSQLUnit
Start
![Page 30: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/30.jpg)
TheoryNoSQLUnit
Start Clean
![Page 31: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/31.jpg)
TheoryNoSQLUnit
Start Clean
Populate
![Page 32: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/32.jpg)
TheoryNoSQLUnit
Start Clean
PopulateExecute
![Page 33: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/33.jpg)
TheoryNoSQLUnit
Start Clean
PopulateExecute
Verify
![Page 34: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/34.jpg)
TheoryNoSQLUnit
Start Clean
PopulateExecute
Verify Stop
![Page 35: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/35.jpg)
Action
![Page 36: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/36.jpg)
Action
![Page 37: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/37.jpg)
Action
Embedded InMemory Redis
com.lordofthejars.nosqlunit.redis.EmbeddedRedis
com.lordofthejars.nosqlunit.redis.ManagedRedis
Managed Redis
![Page 38: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/38.jpg)
Redis Connection
com.lordofthejars.nosqlunit.redis.RedisRule
Action
![Page 39: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/39.jpg)
Action
"data":[ {"simple": [{"key":"key1", "value":"value1"}] }, {"list": [{"key":"key3","values":[{"value":"value3"},{"value":"value4"}]}] }, {"sortset": [{"key":"key4","values":[ {"score":2, "value":"value5" },{"score":3, "value":1 }}]
}] }, {"hash": [{"key":"user","values":[{"field":"name", "value":"alex"},]}] }, {"set":[{"key":"key3","values":[{"value":"value3"},{"value":"value4"}]}] }
]
![Page 40: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/40.jpg)
Action
Demo
![Page 41: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/41.jpg)
Action
![Page 42: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/42.jpg)
Action
![Page 43: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/43.jpg)
Action
Embedded Cassandra
com.lordofthejars.nosqlunit.cassandra.EmbeddedCassandra
com.lordofthejars.nosqlunit.cassandra.ManagedCassandra
Managed Cassandra
![Page 44: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/44.jpg)
Cassandra Connection
com.lordofthejars.nosqlunit.cassandra.CassandraRule
Action
![Page 45: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/45.jpg)
Action"name" : "keyspaceName","columnFamilies" : [{ "name" : "columnFamilyName", "rows" : [{ "key" : "key10", "columns" : [{ "name" : "name11", "value" : "value11" }] },
{ "name" : "otherColumnFamilyName", "type" : "SUPER", "rows" : [{ "key" : "10", "superColumns" : [{ "name" : "1100", "columns" : [{ "name" : "1110", "value" : "1110" }] }
]
![Page 46: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/46.jpg)
Action
![Page 47: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/47.jpg)
Action
Embedded HBase
com.lordofthejars.nosqlunit.hbase.EmbeddedHBase
com.lordofthejars.nosqlunit.hbase.ManagedHBase
Managed HBase
![Page 48: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/48.jpg)
HBase Connection
com.lordofthejars.nosqlunit.hbase.HBaseRule
Action
![Page 49: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/49.jpg)
Action
"name" : "tablename", "columnFamilies" : [{ "name" : "columnFamilyName", "rows" : [{ "key" : "key1", "columns" : [{ "name" : "columnName", "value" : "columnValue" }, ... ] }, ... ] }, ... ]
![Page 50: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/50.jpg)
Action
![Page 51: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/51.jpg)
ActionEmbedded InMemory Neo4j
com.lordofthejars.nosqlunit.neo4j.InMemoryNeo4j
com.lordofthejars.nosqlunit.neo4j.EmbeddedNeo4j
Embedded Neo4j
Managed Wrapped Neo4j
com.lordofthejars.nosqlunit.neo4j.ManagedWrappingNeoServer
Managed Neo4j
com.lordofthejars.nosqlunit.neo4j.ManagedNeoServer
![Page 52: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/52.jpg)
Neo4j Connection
com.lordofthejars.nosqlunit.neo4j.Neo4jRule
Action
![Page 53: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/53.jpg)
Action
<?xml version="1.0" encoding="UTF-8"?><graphml xmlns="http://graphml.graphdrawing.org/xmlns"> <key id="attr1" for="edge" attr.name="attr1" attr.type="float"/> <key id="attr2" for="node" attr.name="attr2" attr.type="string"/> <graph id="G" edgedefault="directed"> <node id="1"> <data key="attr2">value1</data> </node> <node id="2"> <data key="attr2">value2</data> </node> <edge id="7" source="1" target="2" label="label1"> <data key="attr1">float</data> </edge> </graph></graphml>
![Page 54: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/54.jpg)
Action
Demo
![Page 55: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/55.jpg)
Action
![Page 56: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/56.jpg)
Action
![Page 57: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/57.jpg)
Action
Embedded InMemory MongoDB
com.lordofthejars.nosqlunit.mongodb.InMemoryMongoDb
com.lordofthejars.nosqlunit.mongodb.ManagedMongoDb
Managed MongoDB
![Page 58: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/58.jpg)
MongoDB Connection
com.lordofthejars.nosqlunit.mongodb.MongoDbRule
Action
![Page 59: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/59.jpg)
Action
{ "name_collection1": [ { "attribute_1":"value1", "attribute_2":"value2" }, { "attribute_3":2, "attribute_4":"value4" } ], "name_collection2": [ ... ], ....}
![Page 60: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/60.jpg)
More
![Page 61: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/61.jpg)
ActionNoSQLUnit
NoSQLUnit is Ready for the clouds
No lifecycle management
![Page 62: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/62.jpg)
Action
Demo
NoSQLUnit
![Page 63: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/63.jpg)
ActionNoSQLUnit
Acceptance Tests Cloud
![Page 64: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/64.jpg)
ActionNoSQLUnit
NoSQL system may be polyglot
Populating different data in parallel
![Page 65: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/65.jpg)
ActionNoSQLUnit
private final Neo4jConfiguration neo4jConfiguration = newManagedNeoServerConfiguration().connectionIdentifier("neo4j").build();
@Rulepublic final Neo4jRule neo4jRule = newNeo4jRule().configure(neo4jConfiguration).build();
private final RedisConfiguration redisConfiguration = newManagedRedisConfiguration().connectionIdentifier("redis").build();
@Rulepublic final RedisRule redisRule = newRedisRule().configure(redisConfiguration).build();
@Test@UsingDataSet(withSelectiveLocations = {! @Selective(identifier = "neo4j", locations = "matrix.xml"),! @Selective(identifier = "redis", locations = "matrix.json") }, ! loadStrategy = LoadStrategyEnum.CLEAN_INSERT)public void cached_friends_should_be_returned() {...}
![Page 66: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/66.jpg)
ActionNoSQLUnit
private final Neo4jConfiguration neo4jConfiguration = newManagedNeoServerConfiguration().connectionIdentifier("neo4j").build();
@Rulepublic final Neo4jRule neo4jRule = newNeo4jRule().configure(neo4jConfiguration).build();
private final RedisConfiguration redisConfiguration = newManagedRedisConfiguration().connectionIdentifier("redis").build();
@Rulepublic final RedisRule redisRule = newRedisRule().configure(redisConfiguration).build();
@Test@UsingDataSet(withSelectiveLocations = {! @Selective(identifier = "neo4j", locations = "matrix.xml"),! @Selective(identifier = "redis", locations = "matrix.json") }, ! loadStrategy = LoadStrategyEnum.CLEAN_INSERT)public void cached_friends_should_be_returned() {...}
![Page 67: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/67.jpg)
ActionNoSQLUnit
private final Neo4jConfiguration neo4jConfiguration = newManagedNeoServerConfiguration().connectionIdentifier("neo4j").build();
@Rulepublic final Neo4jRule neo4jRule = newNeo4jRule().configure(neo4jConfiguration).build();
private final RedisConfiguration redisConfiguration = newManagedRedisConfiguration().connectionIdentifier("redis").build();
@Rulepublic final RedisRule redisRule = newRedisRule().configure(redisConfiguration).build();
@Test@UsingDataSet(withSelectiveLocations = {! @Selective(identifier = "neo4j", locations = "matrix.xml"),! @Selective(identifier = "redis", locations = "matrix.json") }, ! loadStrategy = LoadStrategyEnum.CLEAN_INSERT)public void cached_friends_should_be_returned() {...}
![Page 68: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/68.jpg)
ActionNoSQLUnit
Partial Support for JSR-330
@Inject
@Named
![Page 69: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/69.jpg)
ActionNoSQLUnit
Rulepublic final MongoDbRule mongoDb = newMongoDbRule().defaultManagedMongoDb(“test”, this);
@Injectprivate Mongo mongo;
![Page 70: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/70.jpg)
Action
Flashback
NoSQLUnit
![Page 71: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/71.jpg)
Action
Spring Data MongoDB - _class attribute
Spring Data Redis - Serializer/OXM/JSON
Spring Data HBase - RowMapper interface
Spring Data Neo4j - __type__ attribute
Spring Data Cassandra - EntityWritter interface
Spring Data
![Page 72: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/72.jpg)
Action
Hibernate MongoDB - name propertyHibernate
![Page 73: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/73.jpg)
What’s Coming
![Page 74: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/74.jpg)
What’s ComingEngines
![Page 75: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/75.jpg)
What’s ComingIntegration
![Page 76: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/76.jpg)
What’s ComingIntegration
https://github.com/lordofthejars/nosql-unit/issues
![Page 77: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/77.jpg)
Conclusions
![Page 78: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/78.jpg)
Conclusions
Hard and Tedious JobSpiderman way
![Page 79: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/79.jpg)
ConclusionsSpiderman way
![Page 80: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/80.jpg)
ConclusionsSpiderman way
![Page 81: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/81.jpg)
ConclusionsSpiderman way
![Page 82: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/82.jpg)
Thank you
![Page 83: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/83.jpg)
Questions
Questions
![Page 84: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/84.jpg)
NoSQLUnitTesting NoSQL Applications
Alex Soto BuenoComputer Engineerlordofthejars.com
@alexsotobUmi no kanatani wa mou sagasanai, Kagayaku monowa itsumo kokoni (Itsumo Nando De Mo)
![Page 85: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/85.jpg)
NoSQLUnitTesting NoSQL Applications
Alex Soto BuenoComputer Engineerlordofthejars.com
@alexsotob
![Page 86: No SQL Unit - Devoxx 2012](https://reader033.vdocuments.mx/reader033/viewer/2022051110/54b6d7ac4a795983428b4654/html5/thumbnails/86.jpg)
CC Photos