diff --git a/test/runtests.jl b/test/runtests.jl
index c1294a923f20287e6b92d24edae2f09882281c52..ed28a6960ae4171b70054dd96d8cdbea4c157340 100644
--- a/test/runtests.jl
+++ b/test/runtests.jl
@@ -65,4 +65,76 @@ end
         @test CaosDB.Connection.connect_manually() != nothing
     end
 
+    @testset "Test transaction" begin
+
+        # transactions can be created from connection names or objects
+        connection = CaosDB.Connection.connect()
+        @test create_transaction(connection) != nothing
+
+        @test create_transaction() != nothing
+        @test create_transaction("julialib-integrationtest") != nothing
+
+        # Construct and execute a transaction manually
+        transaction = create_transaction()
+        add_query(transaction, "FIND ENTITY WITH id=-1")
+        execute(transaction)
+        result_set = get_result_set(transaction)
+        results = get_results(result_set)
+        # There is no entity with id=-1
+        @test length(results) == 0
+        # result-sets can be omitted
+        transaction_results = get_results(transaction)
+        @test length(transaction_results) == 0
+        # No count query, so this should be -1
+        @test get_count_result(transaction) == -1
+
+        # Also works directly, with or without connection being
+        # specified.
+        query_results1 = execute_query("FIND ENTITY WITH id=-1")
+        @test length(query_results1) == 0
+        query_results2 = execute_query("FIND ENTITY WITH id=-1", "julialib-integrationtest")
+        @test length(query_results2) == 0
+        query_results3 = execute_query("FIND ENTITY WITH id=-1", connection)
+        @test length(query_results3) == 0
+
+        # COUNT queries have to be conducted manually
+        count_transaction = create_transaction()
+        add_query(transaction, "COUNT ENTITY WITH id=-1")
+        execute(transaction)
+        # Still an empty result set
+        @test get_count_result(transaction) == 0
+    end
+
+    @testset "Test entity retrieval" begin
+
+        single_retrieve_transaction = create_transaction()
+        add_retrieve_by_id(single_retrieve_transaction, "20")
+        execute(single_retrieve_transaction)
+        results = get_results(single_retrieve_transaction)
+        @test length(results) == 1
+        @test has_errors(results[1]) == false
+        @test get_name(results[1]) == "name"
+
+        multi_retrieve_transaction = create_transaction()
+        add_retrieve_by_id(multi_retrieve_transaction, ["20", "21"])
+        execute(multi_retrieve_transaction)
+        results = get_results(multi_retrieve_transaction)
+        @test length(results) == 2
+        @test get_name(results[1]) == "name"
+        @test get_name(results[2]) == "unit"
+
+        # Helper functions
+        ent = retrieve("20")
+        @test get_name(ent) == "name"
+
+        results = retrieve(["20", "21"])
+        @test length(results) == 2
+        @test get_name(results[1]) == "name"
+        @test get_name(results[2]) == "unit"
+
+        # id=22 doesn't exist
+        @test_throws CaosDB.Exceptions.GenericCaosDBException retrieve("22")
+        @test_throws CaosDB.Exceptions.GenericCaosDBException retrieve(["20", "21", "22"])
+    end
+
 end