### Question:
Syncgroup { public SyncgroupSpec join(String remoteSyncbaseName, List<String> expectedSyncbaseBlessings, SyncgroupMemberInfo info) throws VError { return io.v.syncbase.internal.Database.JoinSyncgroup( dbFullName, remoteSyncbaseName, expectedSyncbaseBlessings, id, info); } Syncgroup(Database database, Id id); Id getId(); void create(SyncgroupSpec spec, SyncgroupMemberInfo info); SyncgroupSpec join(String remoteSyncbaseName, List<String> expectedSyncbaseBlessings,
                              SyncgroupMemberInfo info); void leave(); void destroy(); void eject(String member); VersionedSyncgroupSpec getSpec(); void setSpec(VersionedSyncgroupSpec spec); Map<String, SyncgroupMemberInfo> getMembers();  }### Answer:
@Test public void join() { Id dbId = new Id("idp:a:angrybirds", "core_join_syncgroup"); Id sgId = new Id("idp:u:alice", "syncgroup"); boolean exceptionThrown = false; try { Database db = Service.database(dbId); db.syncgroup(sgId).join("", new ArrayList<String>(), new SyncgroupMemberInfo()); } catch (VError vError) { assertEquals("v.io/v23/verror.NoExist", vError.id); assertNotNull(vError.message); assertNotNull(vError.stack); assertEquals(0, vError.actionCode); exceptionThrown = true; } assertTrue(exceptionThrown); }